[英]Bash Scripting: Using Two Variables in IF Statement
因此,我試圖編寫一個簡單的腳本,該腳本使用兩個stdin變量,然后進行測試以查看這兩個變量的字符串值是否等於設置的字符串。 這是我的代碼:
echo "First Name:"
read fN
echo "Last Name"
read lN
if (( $fN + $lN=="louis smith" ))
then
echo "You are root, you may continue."
else
echo "Access denied, you are not root."
first
當我運行腳本並輸入名字“ louis”和姓氏“ smith”時,出現此錯誤:
((:louis + smith == louis smith:表達式中的語法錯誤(錯誤標記為“ smith”)
然后它告訴我,當我明顯地時候我不是根。 xD任何輸入都可以幫助:D
(( ... ))
用於算術表達式 ,不能用它來比較字符串。 和+
用於添加數字,而不是連接字符串。 對條件表達式使用[[ ... ]]
。
if [[ "$fN $lN" = "louis smith" ]]
除了其他答案之外,您還需要確保自己熟悉可以正確編寫條件的每種方式。 沒有魔術,只需閱讀有關bash的相應章節即可。 [[
測試實際上是bash中的保留字 ,並且是bashism (它在bash中有效,但不適用於POSIX shell)。 它是bash上最靈活,最寬容的測試結構,如果不考慮可移植性,則應使用它。 確保您了解[[
測試子句與[
和test
內置程序]在引號要求 , 單詞拆分和路徑名擴展方面的區別。
除了[[
,還可以使用[
和test
進行測試。 ( [
和test
是等效的。 以下也是正確的並且可移植到POSIX shell:
if [ "$fN $lN" = "louis smith" ]
if test "$fN $lN" = "louis smith"
直接回答你原來的問題,您可以通過使用任一測試多個條件-a
( 和 )或-o
測試表達式本身(舊的語法)內( 或 )或用分隔多個測試表達式 &&
( 和 )或||
( 或 )。 例如,使用您的示例檢查多個條件,您可以執行以下操作:
if [ "$fN" = "louis" -a "$LN" = "smith" ]
要么
if test "$fN" = "louis" -a "$LN" = "smith"
使用&&
或||
編寫 :
if [ "$fN" = "louis" ] && [ "$LN" = "smith" ]
要么
if test "$fN" = "louis" && test "$LN" = "smith"
( 注意:無論你使用,你必須始終留下space
測試表達式和之間[
和]
和space
或newline
(或斷行指示;
)之間if test "$a" = b ; then...
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.