[英]shell scripting “test ” command
我正在編寫shell程序以比較兩個數字並使用test命令顯示狀態
#!/bin/sh
a="42"
b="23"
echo $a
test [$a -eq $b]
echo $?
但我遇到這樣的錯誤,如eq:第5行:test:[42:整數表達式應為2
你必須換線
test [$a -eq $b]
至
test $a -eq $b
測試期望整數表達式,並且[$ a -eq $ b]不是整數表達式
松開方括號。 從
test [$a -eq $b]
行應該在哪里
test $a -eq $b
使用下面的簡化答案
#!/bin/sh
a=42
b=23
echo $a
test $a -eq $b
echo $?
由於a不等於b ,它將答案打印為1
請卸下方括號。
在手冊頁上,您可以使用方括號代替顯式使用“測試”一詞。 所以這是一個或另一個。
從手冊頁:
test Evaluate a conditional expression expr. Syntax
test expr
[ expr ]
[[ expr ]] [ is a synonym for test but requires a final argument of ].
嘗試man test
,在手冊頁中,您將看到它期望您在test
后表達自己的觀點。 您的表達式為$a -eq $b
,命令應為test $a -eq $b
您做錯了什么:
man [
,您將獲得與man test
相同的手冊頁。 您正在嘗試同時使用 [
本身是命令,因此在命令的下一部分之前[
之前需要一個空格。 因此,它應該是[ $a -eq $b ]
而不是[$a -eq $b]
在使用test [$a -eq $b]
,可以使用
test $a -eq $b
或 [ $a -eq $b ]
您必須使用一個,因為它們是相同的(不管某些shell內置程序如何)
$ ls -l /bin/{test,[}
-rwxr-xr-x 1 root wheel 22704 4 May 00:05 /bin/[
-rwxr-xr-x 1 root wheel 22704 4 May 00:05 /bin/test
所以要么
test expr
要么
[ expr ]
甚至
/bin/[ expr ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.