[英]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.