我試圖檢測一個字符串是否持有破折號,但似乎沒有任何工作對我來說(我是新的shell)。如果shell中的條件問題
if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi
我試圖檢測一個字符串是否持有破折號,但似乎沒有任何工作對我來說(我是新的shell)。如果shell中的條件問題
if [ "$m" -eq "-" ]
then
echo "has dash"
else
echo "has no dash"
fi
if [ "x$m" = "x-" ]; then
echo "is a dash"
else
echo "is not a dash"
fi
使用字符串比較,報價的一切,並避免可能的[
命令行開關混亂(部分未挺,彈Posix的),如果$m
開始於-
。
-eq
用於測試整數的相等性。爲了測試字符串是否相等,使用=
代替:
if [ "$m" = - ]
爲test
進一步的細節參見手冊頁。
重要提示:如果'$ m'是空字符串,則將評估爲語法錯誤。爲了防止這種情況,一個常見的習慣用法是測試'if [「x $ m」= x-]'。 – 2009-11-28 22:23:19
實際上,''m''附近有''m''引號,''''''args'列表上會有一個空字符串,因此沒有語法錯誤。引用以'x'開頭的原因是爲了避免'$ m'以'-'開始並且'[''將其解釋爲命令行開關時出現問題。 – ndim 2009-11-28 22:25:41
@Adam我沒有在bash(版本3.1)中出現語法錯誤。空雙引號被視爲第一個參數。 – 2009-11-28 22:28:46
'-eq'運算符執行算術比較。您需要使用'='運算符。即:
if test「$ m」=' - ';那麼 回聲「是破折號」; else 回聲「沒有短劃線」; fi
包含破折號,還是隻是一個短劃線? – 2009-11-28 22:21:35