2013-10-14 58 views
3

我在bash shell中編寫了以下代碼。 它應該採用位置參數,並且如果它以短劃線「 - 」開頭,則應該輸入錯誤消息。在bash中使用通配符if語句

但由於某些原因,if語句總是被跳過。它只適用於如果我真的輸入 - *

我得到的印象是修復與「$」有關。

下面是代碼片段:

EXECNAME=$1 
    if [ "$EXECNAME" = "-*" ]; then 
      echo "error: invalid executable name" 
    fi 

回答

4

您可以在BASH匹配的水珠支持模式中使用雙括號[[]]沒有使用引號:

[[ "$EXECNAME" = -* ]] && echo "error: invalid executable name" 
+1

非常感謝。 –

0

匹配我喜歡用case

case $EXECNAME in 
    -*) echo "error: invalid executable name" 
esac