学 Kali 渗透的时候 Shell 脚本差点把我搞疯了,不停报错。因刚刚接触 Linux 和 Shell,没有系统学过,所以很多报错都不知道怎么回事。
对着视频敲脚本,视频中空格有没有也不怎么看得出来,没想到是空格的问题。后来查才发现 Shell 对空格有特别严格的要求。
0x01. 空格规则
1. =
赋值时:两边不能有空格
i=1
i=$((i+1))
比较时:两边必须有空格
if [ $a = $b ]
2. if
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
整数比较时:中括号前后必须有空格
if [ a -xx b ]
=
——eq
——equal
>
——gt
——greater than
<
——lt
——less than
!=
——ne
——not equal
>=
——ge
——greater equal
<=
——le
——less equal
参考:Linux#Shell#if [ $# -ne 1 ];then 是什么意思?
看来双括号还有问题…再学吧…
0x02. 变量规则
1. 变量名、等号、值之间不能有空格
- 首个字符必须为字母(a-z,A-Z)
- 中间不能有空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)
2. 变量的引用是用 $ 符号加上变量名
echo ${a}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号,这是个好习惯,既便于阅读,又不易出错。
网友评论