引用
1.
双引号的应用不能阻止bash扩展。
echo $a == echo "$a"
而单引号就可以阻止:echo '$a'
2.
反引号`
a=`echo 123`:先执行``里面的命令,再赋值给a
3.
((a++)):2个括号告诉bash里面是一个变量,去执行a++操作。
c=(a+b):c的值是:"a+b",因为bash认不出变量来
c=$((a+b)):bash察觉到变量了,相加赋值给c
c=$((a+10)):bash察觉到变量了,相加赋值给c
4.
测试3>8吗:
test 3 -gt 8
echo $? :0:true,其他:false
具体地看man test.
test 3 -gt 8 && echo ok: 后面不执行,但是换成| |就执行了。
[]==test
[ 3 -gt 8] || echo ok :输出ok
练习题
编辑一个脚本:vi a.sh
#!/bin/bash
[ ! $# -eq 1 ] && echo "args false..." && exit 2:假如参数的个数为1,第一个就为假,就执行下面的,否则接着看第二个逻辑,输出表达式,在看第三个,退出,设定错误码为2,echo #?可以查看到。
id $1 &> /dev/null && echo "user exist.." && exit3 : 若用户已存在,第一个为真,接着执行后面的,直到退出。否则,向下执行。期间id信息传导黑洞里面。
useradd $1 :取第一列的数据作为参数
echo $1 | passwd --stdin $1 &> /dev/null :将用户名作为密码利用管道传给后面,重定向到一个黑洞,这样就不会显示到屏幕了,会静默运行
或者这样写:
接着chmod +x a.sh 这样就能执行了,执行时开启一个bash执行完自动销毁该bash。
最后直接./a.sh aaa,然后su aaa切换用户看看