簡體   English   中英

Bash腳本:在IF語句中使用兩個變量

[英]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 測試表達式和之間[]spacenewline (或斷行指示; )之間if test "$a" = b ; then...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM