$? #判斷上一條命令執(zhí)行的是否成功,,成功返回0,上一條命令不成功返回非0的數(shù)字
$0 #返回腳本的文件名稱 $1-$9 返回對應(yīng)的參數(shù)值 $* 返回所有的參數(shù)值是什么 $# 返回參數(shù)的個(gè)數(shù)和
調(diào)用變量的話 $或者a 或者 ${a}
常見的幾個(gè)符號(hào)
>會(huì)覆蓋原有的內(nèi)容
>>不會(huì)覆蓋原有的內(nèi)容
; #執(zhí)行多條命令
|
#管道符
&&
#前面的命令執(zhí)行成功,后面的才可以執(zhí)行
|| #前面的命令執(zhí)行失敗,,后面的才可以執(zhí)行
"" #會(huì)輸出變量值
'
' #輸出本身
`` #輸出命令結(jié)果eg:a=`date`;echo $a
2>/dev/null #錯(cuò)誤輸出到無底洞
1>/dev/null #正確輸出到無底洞
加:expr 12 + 6
expr $a + $b
echo $[12 + 6]
echo $[a + b]
echo $((12 + 6)) echo
$((a + b))
減:expr 12 - 6 expr
$a - $b echo $[12 - 6] echo $[a - b]
echo $((12 - 6)) echo $((a - b))乘:expr 12 \* 6
expr $a \* $b
echo $[a * b]
echo $((12 * 6))
echo $((a * b))
除:expr 12 / 6 expr
$a / $b echo $((12 / 6)) echo $((a / b))
echo $[12 / 6] echo $[a / b] 求余:expr
12 % 6 expr $a % $b echo $((12 % 6))
echo $((a % b)) echo $[12 % 6] echo $[a % b]
小數(shù)
bc計(jì)算器 保留多少位小數(shù)可以通過scale 但是scale只對除法,取余數(shù),,乘冪 有效,,對加減沒有效。
echo
"scale=2;(0.2+0.3)/1" | bc #計(jì)算出0.2+0.3的和并保留倆位小數(shù),,此時(shí)bc計(jì)算器會(huì)省略掉個(gè)位數(shù)的0
echo
"scale=2;(1.2+1.3)/1" | bc #計(jì)算出1.2+1.3的和并保留倆位小數(shù)
常見的條件判斷
l 語法:[ 判斷表達(dá)式]
----必須有空格
文件(夾)或者路徑: -e 目標(biāo)是否存在(exist)
-d 是否為路徑(directory)
-f 是否為文件(file)
[ -e foer.sh ] || touch foer.sh
#判斷當(dāng)前目錄下是否有foer.sh這個(gè)文件,,假如沒有就創(chuàng)建出foer.sh文件
l 權(quán)限:
-r 是否有讀取權(quán)限(read)
-w 是否有寫入權(quán)限(write)
-x 是否有執(zhí)行權(quán)限(excute)
[ -x 123.txt ]
&& echo '有執(zhí)行權(quán)限'
l 整數(shù)值(int型):
-eq 等于(equal)
-ne 不等于(not
equal) -gt 大于(greater than)
-lt 小于(lesser
than) -ge 大于或者等于(greater or
equal) -le 小于或者等于(lesser or
equal) [ 9 -gt 8 ] && echo '大于'
l 小數(shù)(浮點(diǎn)型):
[ `echo '1.2 < 1.3' |
bc` -eq 1 ] && echo '小于'
l 字符串:
= 相等!= 不相等
[ 'kkkkk' != 'kkkk' ]
&& echo '不等于'
#!/bin/bash
touch $1
if [ $? -eq
0 ]
then
echo
"$1 創(chuàng)建成功"
fi
shell腳本輸入之read命令
l 語法:read -參數(shù)
-p:給出提示符。默認(rèn)不支持"\n"換行
#!/bin/bash
read -p
"請輸入密碼:" pass
echo $pass
-s:隱藏輸入的內(nèi)容
帶換行的
-t:給出等待的時(shí)間,,超時(shí)會(huì)退出read
等待5秒
-n:限制讀取字符的個(gè)數(shù),,觸發(fā)到臨界值會(huì)自動(dòng)執(zhí)行
處理海量數(shù)據(jù)之grep命令
grep應(yīng)用場景:通常對數(shù)據(jù)進(jìn)行
行的提取
l 語法:grep [選項(xiàng)]...[內(nèi)容]...[file]
l
-v #對內(nèi)容進(jìn)行取反提取
-n #對提取的內(nèi)容顯示行號(hào)
-w #精確匹配
-i #忽略大小寫
^ #匹配開頭行首
-E #正則匹配
l cut應(yīng)用場景:通常對數(shù)據(jù)進(jìn)行列的提取
l 語法:cut [選項(xiàng)]...[file]
-d #指定分割符
-f #指定截取區(qū)域 -c #以字符為單位進(jìn)行分割 注意:不加-d選項(xiàng),默認(rèn)為制表符,,不是空格/bin/bash
#代表可以登錄的用戶 /sbin/nologin #代表不可以登錄的用戶 -d與-f:eg:以'|'為分隔符,,截取出cut.txt的第一列跟第二列 cut -d '|' -f 1,2 cut.txt
eg:以'|'為分隔符,截取出cut.txt的第一列至第二列 cut -d '|' -f 1-2 cut.txt
eg:以'|'為分隔符,,截取出cut.txt的第二列到最后一列 cut -d '|' -f 2- cut.txt
-c: eg:截取/etc/passwd文件從第二個(gè)字符到第三個(gè)字符
cut -c 2-3 cut.txt
eg:比如領(lǐng)導(dǎo)想叫你截取linux上面所有可登陸普通用戶 grep '/bin/bash' /etc/passwd | cut -d ':' -f 1 | grep -v root