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