一、if判斷檔案、目錄屬性
[ -f file ] 判斷是否是普通檔案,且存在
#!/bin/bash f="/tmp/aminglinux" if [ -f $f ] then echo $f exist else touch $f fi
[ -d file ] 判斷是否是目錄,且存在
#!/bin/bash f="/tmp/aminglinux" if [ -d $f ] then echo $f exist else touch $f fi
[ -e file ] 判斷檔案或目錄是否存在
#!/bin/bash f="/tmp/aminglinux" if [ -e $f ] then echo $f exist else touch $f fi
[ -r file ] 判斷檔案是否可讀
#!/bin/bash f="/tmp/aminglinux" if [ -e $f ] then echo $f readable fi
[ -w file ] 判斷檔案是否可寫
#!/bin/bash f="/tmp/aminglinux" if [ -e $f ] then echo $f writeable fi
[ -x file ] 判斷檔案是否可執行
#!/bin/bash f="/tmp/aminglinux" if [ -e $f ] then echo $f exeable fi
指令碼改良
#!/bin/bash
f=" /tmp/aminglinux"
[ -f $f] && rm -f $f
等同於if [ -f $f ]
then
rm -f $f
fi&& 如果判斷條件成立則執行
|| 如果判斷條件不成立則執行
[ ! -f $f] && rm -f $f 加感嘆號表示取反,判斷檔案是否不存在
二、if的一些特殊用法
if [ -z "$a" ] 表示當變數a的值為空時,做什麼處理
if [ -n "$a"] 表示當變數a的值不為空
if ! grep -wq 'user1' /etc/passwd;then useradd user1 ; fi 判斷是否存在user1使用者,如
果不存在就建立
使用-z 或者是-n 後面的變數必須加雙引號
if grep -q '123' 1.txt ;then 表示如果1.txt中含有『123』的行時會做什麼處理
if [ ! -e file ];then 表示檔案不存在時會怎麼樣
if (($a<1)); then 等同於 if [$a -lt 1]; then
中不能使用<,>,==,!=,>=,<=這類的符號
指令碼中變數需要使用雙引號,檔案不需要雙引號
grep -wq 過濾單詞並不列印出來
-w過濾單詞
-q 不列印過濾的 內容
三、case判斷
在 case中可以使用或即|
1.格式
value1)
command
value2)
command
command
ease
2.例子
#!/bin/bash
read -p "please input a number :" n 等待使用者輸入 read -p
if [ -z $n ] 檢測變數是否為空,即使用者是否輸入內容
then
echo "pleas input a number." 當變數為空時輸出
exit 1
fin1=`echo $n|sed 's/[0-9]//g'` 使用sed清空$n中的數字
if [ ! -z $n1 ] 若變數為不空則輸出提示,證明使用者輸入了除了
數字以外的內容
theecho "please input a number."
exit 1
fi 判斷數字的大小,返回標記值
if [ $n -lt 60 ] && [ $n -ge 0 ]
then
tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
tag=2
elif [ $n -ge 80 ] && [ $n -lt 100]
then
tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
tag=4
else
tag=0
ficase $tag in
1)echo "not ok "
2)echo " ok "
3)echo "ok ok"
4)echo " oook"
echo "the number range is 0-100"
四、for迴圈
1.語法:for 變數名 in 條件 ; do 。。。;done
2.例子
#!/bin/bash
sum=0
for i in `seq 1 100`
dosum=$[$sum+$i]
echo $i
done
echo $sun
#!/bin/bash
cd /etc/
for a in `ls /etc/`
doif [ -d $a ]
then
echo $a
ls $a
fidone
for i in `seq 1 3` ; do echo $i ;done
for i in `ls ./` ; do echo $1 ;done
for迴圈的時候會以空格或者回車為分隔符,要特別注意
shell訓練計畫30天之第六天
一 什麼是shell 1.shell是一種程式語言 2.shell可以使用邏輯判斷和迴圈等語法 3.shell支援自定義函式 4.shell是系統命令的集合 5.shell指令碼可以實現自動化運維,可以大大增加運維的效率 6.shell其實就是把系統的命令寫進檔案中,有點類似於windows的批處理...
shell訓練計畫30天之第一天
一 什麼是shell 1.是命令直譯器 2.支援特定的語法 邏輯判斷 迴圈 3.每個使用者可以有自己特定的shell 4.centos7預設shell為bash bourne agin shell 5.其他的shell zsh ksh 二 命令歷史 1.按向上方向鍵檢視歷史命令 2.歷史命令檔案存在...
shell訓練計畫30天之第十九天
例36 乙個數字的行 要求 用shell實現,把乙個文件中只有乙個數字的行給列印出來 要點 用sed替換所有非數字的字元為空的,剩下的就是數字 bin bash while read line don echo line sed s 0 9 g wc l if n eq 1 then echo li...