1. 程式人生 > >Shell基礎語法(二)

Shell基礎語法(二)

-s pac nbsp num mil etc nor 不能 rep

if語句

基礎格式

格式1:if 條件 ; then 語句; fi

格式2:if 條件; then 語句; else 語句; fi

格式3:if …; then … ;elif …; then …; else …; fi


可以使用 && || 結合多個條件

if [ $a -gt 5 ] && [ $a -lt 10 ]; then

if [ $b -gt 5 ] || [ $b -lt 3 ]; then


算術比較運算符

num1 -eq num2 等於 [ 3 -eq $mynum ]

num1 -ne num2 不等於 [ 3 -ne $mynum ]

num1 -lt num2 小於 [ 3 -lt $mynum ]

num1 -le num2 小於或等於 [ 3 -le $mynum ]

num1 -gt num2 大於 [ 3 -gt $mynum ]

num1 -ge num2 大於或等於 [ 3 -ge $mynum ]


文件的判斷

-e filename 如果 filename存在,則為真 [ -e /var/log/syslog ]

-d filename 如果 filename為目錄,則為真 [ -d /tmp/mydir ]

-f filename 如果 filename為常規文件,則為真 [ -f /usr/bin/grep ]

-L filename 如果 filename為符號鏈接,則為真 [ -L /usr/bin/grep ]

-r filename 如果 filename可讀,則為真 [ -r /var/log/syslog ]

-w filename 如果 filename可寫,則為真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可執行,則為真 [ -L /usr/bin/grep ]


特殊用法

if [ -z "$a" ] 這個表示當變量a的值為空時會怎麽樣(養成好習慣,一定要對判斷的值添加 “雙引號”;如果是"文件"可以省略)

if [ -n "$a" ] 表示當變量a的值不為空

if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行時會怎麽樣

if [ ! -e file ]; then 表示文件不存在時會怎麽樣

if (($a<1)); then …等同於 if [ $a -lt 1 ]; then…

[ ] 中不能使用<,>,==,!=,>=,<=這樣的符號


# if grep -wq 'juispan' /etc/passwd; then echo "juispan already exists"; fi

juispan already exists


case語句

基礎格式

case 變量名 in

value1)

command

;;

value2)

command

;;

*)

commond

;;

esac


如果case中的某個value是一樣的,也可以這樣寫:


2|3) ##“ |”表示或的意思

command

;;


Shell基礎語法(二)