bash中表示邏輯與的兩種方法:
(1)[ $state == "running" -a $name == "zone1" ]
(2)[[ $state == "running" && $name == "zone1" ]]
ksh中支持第二種。
實例:
#! /bin/bash read -p "pelease input your name:" name read -p "pleaase input your password:" passwd if [ $name == "root" -a $passwd == "123" ]; then echo "登錄成功!" else echo "登錄失敗!" fi if [[ $name == "root" && $passwd == "123" ]]; then echo "Login pass" else echo "Login fail" fi
輸出結果:
pelease input your name:root
pleaase input your password:123
登錄成功!
Login pass
在ksh中read -p的使用好像有問題,會出現./learn_shell.save[2]: read: no query process,這樣的錯誤提示。
因此改成下面的形式:
(1)第一種
echo "ThePrompt\c"
read TheSomthing
echo $TheSomething
(2)第二種
read TheSomething?'ThePrompt'
細微區別就是第一種提示語句后會回車,而第二種不會回車。
實例:
#! /usr/bin/ksh echo "pelease input your name:" read name read passwd?"pleaase input your password: " if [[ $name == "root" && $passwd == "123" ]]; then echo "Login pass" else echo "Login fail" fi # ./learn_shell.save pelease input your name: (這個地方有回車) root pleaase input your password: 123 Login pass