參考資料
-
基礎(chǔ)命令
# 打印 如果字符串中間有空格, 需要加上"". 單引號(hào)會(huì)使變量不起作用
echo str
echo "變量 $param"
# 將字符串作為命令執(zhí)行
echo $(pwd)
echo `ls -al`
# 查看幫助
man bc
-
變量
定義變量
變量的賦值=
兩側(cè)不能有空格
變量的使用在變量名前加$
a=2
echo $a
-
運(yùn)算符
與其他語(yǔ)言類(lèi)似
運(yùn)算符兩邊有空格, 一些運(yùn)算符, 如'*', 需要轉(zhuǎn)義 `*'
nu0=2
nu1=3
echo $nu0 \* $nu1
-
整數(shù)運(yùn)算
num0=1
num1=2
# 第一種方法
expr $num0 + $num1
# 第二種方法
echo $[num0+num1]
-
浮點(diǎn)數(shù)運(yùn)算
管道10 /3
這里的解釋不明白?
# '|'管道將上一個(gè)命令的執(zhí)行結(jié)果作為下一個(gè)命令的參數(shù)
# bc是bash的計(jì)算器
echo "scale=2; 10 / 3" | bc
-
判斷語(yǔ)句
if-then-else-fi
# 注意command這里是命令
# 命令正常退出狀態(tài)碼為0, 反之非0
if command
then
comands
# if語(yǔ)句結(jié)束
fi
變形語(yǔ)句
if-then-elif-then-else-fi
test命令
- 用于整數(shù)比較, 浮點(diǎn)數(shù)
?
比較符 -eq -ne -gt -ge -lt -le
nu0=1
nu1=2
# 第一種方法
if test $nu0 -lt $nu1
then
echo nuo小于nu1
fi
# 第二種方法 (( expression )), 注意括號(hào)內(nèi)側(cè)的空格
if (( nuo < nu1 ))
#if(( $nuo < $nu1))
then
echo nuo小于nu1
fi
- 用于字符串比較
字符串比較符 = < > !=,-n(長(zhǎng)度非0),-z(長(zhǎng)度是0), 注意需要轉(zhuǎn)義><
str1=test
str2=test
#第二種方法, 注意比較符之間的空格, 不能去掉$
if [[ $str1 = $str2 ]]
then
echo 兩個(gè)相等
fi
- 用于文件比較
?
case語(yǔ)句
num=2
case $num in
1)
echo 1;;
*)
echo 2;;
esac
-
循環(huán)語(yǔ)句
for - do-done
for var in a b c d
do
echo $var
done
修改分隔符
在for var in list中l(wèi)ist默認(rèn)以空格分隔,如果需要以','分隔, 需要修改$IFS
$','
和','
用比較語(yǔ)句似乎是一樣的, echo $IFS
無(wú)結(jié)果?
for var in a,b,c該句在修改后仍然輸出a,b,c?
oldIFS=$IFS
IFS=","
list=a,b,c
for var in $list
do
echo $var
done
IFS=$oldIFS
c語(yǔ)言式for
for (( i=0; i < 10; i++ ))
do
echo $i
done
while,until
a=2
#whle test condition
while [ $a -le 2]
do
echo '愛(ài)吃'
# break可以加數(shù)字, 當(dāng)前循環(huán)為1, 再外一層循環(huán)2
break
done
#或者
while (( $a <= 2 ))
#...
-
獲得用戶(hù)的輸入
read 加參數(shù), 用戶(hù)輸入將存入指定的變量中.多余的將會(huì)存入最后一個(gè)變量中
#-n 不換行輸入
echo -n "how are you"
read answer
echo $answer
#多個(gè)參數(shù)
read -p "what do you like?" money girls
echo $girls
不加參數(shù), 默認(rèn)變量$REPLY
設(shè)置超時(shí)
if read -t 4 "i am happy"
then
echo 'yes'
else
echo timeout
fi
-
獲取命令參數(shù)
$1
第幾位參數(shù)
${10}
超過(guò)9
echo "filename: $0"
echo "base filename: $(basename $0)"
echo "$1"
echo "${2}"
$#
參數(shù)的數(shù)量
for (( index=0; index <= $#; index++))
do
# echo ${$index}錯(cuò)誤{}中不能用$, 用!表示
echo ${!index}
done
$*
參數(shù)整體作為一個(gè)字符串
$@
參數(shù)分隔成多個(gè)字符
# 這里需要放入""中, 否則因?yàn)閒or會(huì)將字符串按空格分隔
for para in "$*"
do
echo $para
done
for para in "$@"
do
echo $para
done