引用

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切换用户看看

 

posted @ 2019-06-19 10:52  Jary霸  阅读(155)  评论(0编辑  收藏  举报