shell編程的標準條件語句
是這樣的:
是這樣的:
if test "$1" = pogge
then
echo "Do you Like Sacred?"
fi
then
echo "Do you Like Sacred?"
fi
很簡單,但是你了解其中的機制嗎?
1.在shell中每運行完一條命令,都會返回一個exit status值(有0和非0兩種)
一般而言0表示運行成功,非0表示未成功運行
這個值存放在$?這個變量中;
你可以運行下面的命令試試:
1.在shell中每運行完一條命令,都會返回一個exit status值(有0和非0兩種)
一般而言0表示運行成功,非0表示未成功運行
這個值存放在$?這個變量中;
你可以運行下面的命令試試:
ls
echo $?
ls 0000
echo $?
echo $?
echo $?
ls 0000
echo $?
echo $?
2.if是一個命令
當它后面的一條命令執行完畢后
它會查看$?的值(也就是剛執行完的命令的exit status值);
如果是0,則執行then語句段
否則跳過
3.test是一個命令
多數情況下它接收三個參數,上面的"$user", =, pogge分別是它的三個參數,
這正是"user", =, pogge 之間必須要用空格分開的原因
test會把這三個參數組成表達式,然后如果表達式返回值是真,
那么test命令的exit status為0
否則test命令的exit status為非0
你可以運行下面的命令試試:
當它后面的一條命令執行完畢后
它會查看$?的值(也就是剛執行完的命令的exit status值);
如果是0,則執行then語句段
否則跳過
3.test是一個命令
多數情況下它接收三個參數,上面的"$user", =, pogge分別是它的三個參數,
這正是"user", =, pogge 之間必須要用空格分開的原因
test會把這三個參數組成表達式,然后如果表達式返回值是真,
那么test命令的exit status為0
否則test命令的exit status為非0
你可以運行下面的命令試試:
test pogge = pogge
echo $?
test pogge = dynos
echo $?
echo $?
test pogge = dynos
echo $?
綜上,你完全可以寫出并理解下面語句的含義:
if who | grep "pogge" > /dev/null
then
echo "pogge logged"
fi
then
echo "pogge logged"
fi