學(xué) Kali 滲透的時(shí)候 Shell 腳本差點(diǎn)把我搞瘋了,不停報(bào)錯(cuò)昂灵。因剛剛接觸 Linux 和 Shell,沒有系統(tǒng)學(xué)過舞萄,所以很多報(bào)錯(cuò)都不知道怎么回事眨补。
對著視頻敲腳本,視頻中空格有沒有也不怎么看得出來倒脓,沒想到是空格的問題撑螺。后來查才發(fā)現(xiàn) Shell 對空格有特別嚴(yán)格的要求。
0x01. 空格規(guī)則
1. =
賦值時(shí):兩邊不能有空格
i=1
i=$((i+1))
比較時(shí):兩邊必須有空格
if [ $a = $b ]
2. if
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
整數(shù)比較時(shí):中括號前后必須有空格
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 是什么意思?
看來雙括號還有問題…再學(xué)吧…
0x02. 變量規(guī)則
1. 變量名崎弃、等號甘晤、值之間不能有空格
- 首個(gè)字符必須為字母(a-z,A-Z)
- 中間不能有空格饲做,可以使用下劃線(_)
- 不能使用標(biāo)點(diǎn)符號
- 不能使用 bash 里的關(guān)鍵字(可用 help 命令查看保留關(guān)鍵字)
2. 變量的引用是用 $ 符號加上變量名
echo ${a}
變量名外面的花括號是可選的线婚,加不加都行,加花括號是為了幫助解釋器識別變量的邊界盆均,建議給所有變量加上花括號塞弊,這是個(gè)好習(xí)慣,既便于閱讀缀踪,又不易出錯(cuò)居砖。