簡體   English   中英

Bash腳本中的字符串比較不起作用

[英]String comparison in Bash script not working

我在Bash中編寫了以下腳本,但它沒有打印所需的輸出:

a="abc"

if (test "$a"="$a ") then 
    echo "true "
else
    echo "false "
fi

此腳本應該打印為false但不是。 我是Bash腳本的新手,所以有人可以告訴我為什么它不打印false

你只給test一個參數: "$a"="$a " ,相當於"$a=$a " test只獲得一個參數時,如果該參數包含至少一個字符,則計算結果為0 / true / success,否則計算為1 / false / error。 最小的修復是在=周圍放置空格,所以你給它三個獨立的參數:

if (test "$a" = "$a ") then

但我真的建議用Bashier風格寫它:

if [[ "$a" = "$a " ]] then

(請注意,原始版本中的()只會導致test在子shell中運行,這實際上根本沒有用處。)

暫無
暫無

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

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