Bash
變數號是否被視為字元串?
這是我從一本書(Linux 命令行)中獲得的腳本
#!/bin/bash # trouble: script to demonstrate common errors number=1 if [ $number = 1 ]; then echo "Number is equal to 1." else echo "Number is not equal to 1." fi
我對錶達感到困惑:
$number = 1
在 [ 命令中, = 運算符用於比較字元串,對嗎?或者那裡發生了什麼?
字元串用引號和不帶引號來標識?
[ $number = 1 ]
字元串比較和數值比較之間的區別在於[ $number -eq 1 ]
,相等性意味著基於上下文的不同事物。例如:number="1" if [ $number -eq 01 ]; then echo "true" else echo "false" fi
上面的程式碼會回顯
true
,因為01
在數值上等於1
,而這個程式碼塊:number="1" if [ $number = 01 ]; then echo "true" else echo "false" fi
將回
false
顯,因為字元串01
與字元串不同1
。
有關條件運算符的文件,您需要參考
- Bash 條件表達式
- 命令
test
( 又名[ ... ]
)- 和
[[ ... ]]
條件構造