rhce-07 第17-18题
题目列表
17.创建一个脚本
18.创建一个添加用户的脚本
17.创建一个脚本
在system1上创建一个名为/root/foo.sh的脚本,让其提供下列特性:
1)当运行/root/foo.sh redhat,输出fedora。
2)当运行/root/foo.sh fedora,输出redhat。
3)当没有任何参数或者参数不是redhat或者fedora时,其错误输出产生以下的信息:
/root/foo.sh redhat|fedora
system1:
1 | [root@localhost ~]# vim /root/foo.sh |
18.创建一个添加用户的脚本
在system1上创建一个名为/root/batchusers,此脚本能够实现为系统system1创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:
1)此脚本要求提供一个参数,此参数就是包含用户名列表的文件。
2)如果没有提供参数,此脚本应该给出下面的提示信息Usage: /root/batusers userfile ,并且退出返回相应的值。
3)如果提供一个不存在的文件名,此脚本应该给出下面的提示信息Input file not found然后退出并返回相应的值。
4)创建的用户不可登录交互式shell。
5)此脚本不需要为用户设置密码。
6)您可以从下面的URL获取用户列表作为测试用:
http://classroom.example.com/materials/userlist
system1:
1 | [root@localhost ~]# vim /root/batchusers |
验证:
命令解析
bash的单引号’’,双引号””和反引号
的区别。
单引号’ ‘ 和双引号” “,这两者都是解决变量中间有空格的问题。在bash中,空格是一种很特殊的字符,比如在bash中这样定义string=hello world,这样就会报错,为了避免出错就得使用单引号’ ‘和双引号” “。
单引号’’,双引号””的区别
1)单引号’ ‘剥夺了所有字符的特殊含义,单引号’ ‘内就变成了单纯的字符。
2)双引号” “则对于双引号” “内的参数替换($)和命令替换。
1 | [root@localhost ~]# bash |
反引号
反引号是命令替换,命令替换是指Shell可以先执行中的命令,将输出结果暂时保存,在适当的地方输出。下面的例子中,将命令执行结果保存在变量中:
1 | [root@localhost ~]# bash |
由上面的三个例子可以看出,无论用单引号还是不加符号,都只能将字符串date赋值给mydate变量,导致后面输出这个变量的时候仅仅是输出字符串date。
而用单引号的时候,可以看到将date命令执行结果赋值给了mydate变量,所以后面输出这个变量的时候得以输出date命令的执行结果。