學習shell基礎命令
''
單引裏面寫什麼就是什麼shell
""
雙引裏面寫什麼就是什麼(若是有變量會把變量的量顯示出來)bash
``
與下面的$()同樣,優先執行完得出結果
$()ide
測試
[] 中括號裏面都要有空格學習
-f 測試是否爲文件
例: [ -f /etc/passwd ] && echo '真的是個文件' //成功的
[ -f /home ] && echo '真的是個文件' // 失敗的測試
-d 測試是否爲目錄
例: [ -d /etc/passwd ] && echo '真的是個文件夾' // 失敗的
[ -d /home] && echo '真的是個文件夾' //成功的內存
-e 測試是否存在
例: [ -e /mnt/cdrom ] && echo '是的存在' it
&& 邏輯與( 前面若是能執行成功則後面接着執行 )
|| 邏輯或( 前面若是能執行成功則後面的不執行,前面執行不成功則後面接着執行 )class
-r 測試有讀的權限嗎
[ -r /etc/passwd ] && echo '是的有讀取的權限'awk
-w 測試有寫的權限嗎基礎
-x 測試有執行的權限嗎
比對測試
-eq 測試是否爲相等
例:
a=100
b=98
[ $a -eq $b ] && echo '是的它們是相等的'
b=100
[ $a -eq $b ] && echo '是的它們是相等的'
-ne 測試是否爲不相等
-gt 測試是否爲大於
-lt 測試是否爲小於
判斷if
單分支的if
if [ 條件測試 ]
then
do
fi
例子:
cat > for-free.sh <<end
#!/bin/bash
a=$(free -m |grep -i mem |awk '{print $4}')
if [ $a -gt 100 ]
then
echo "如今可用內存爲$a ,夠你用"
fi
end
chmod +x for-free.sh
./for-free.sh
雙分支的if
if [ 條件測試 ]
then
do
else
do
fi
例子:
cat >>for-5.sh <<end
a=$(free -m |grep -i mem |awk '{print $4}')
if [ $a -gt 100 ]
then
echo "如今可用內存爲$a ,夠你用"
else
echo "如今可用內存爲$a ,不夠你用"
fi
end
chmod +x for-5.sh
./for-5.sh
cat >for-sdd.sh <<end
#!/bin/bash
echo "這是一個判斷/dev/sdd磁盤使用量的腳本"
pan=$(df -Th |grep /dev/sdd |awk '{print $5}' |cut -d G -f 1 )
if [ $a -gt 7 ]
then
echo 「如今的/dev/sdd使用量爲 $pan G,說明磁盤還夠用」
else
echo 「如今的/dev/sdd使用量爲 $panG,說明磁盤不夠用」
fi
end
chmod +x for-sdd.sh
./for-sdd.sh
多分支的if
if [ 條件測試 ]
then
do
elif [ 條件測試 ]
do
elif [ 條件測試 ]
do
elif [ 條件測試 ]
do
elif [ 條件測試 ]
do
elif [ 條件測試 ]
do
elif [ 條件測試 ]
do
else
do
fi
例:cat >for-number.sh <<end#!/bin/bashecho '這是一個查當作績等級的腳本'read -p '請輸入你所得的成績:' intif [ $int -ge 90 -a $int -le 100 ]thenecho '你的成績等級爲優等生'elif [ $int -ge 80 -a $int -le 89 ]thenecho '你的成績等級爲次優等生'elif [ $int -ge 70 -a $int -le 79 ]thenecho '你的成績等級良等生'elif [ $int -ge 60 -a $int -le 69 ]thenecho '你的成績等級爲及格生'elseecho '你的成績系統斷定爲補考'fiendchmod +x for-number.sh./for-number.sh