/bin/sh の部分一致文字列

/bin/sh の部分一致文字列

これがmacaddressと部分的に一致しない理由を誰かが私に説明できますか$mac

#!/bin/sh

mac="f0:79:60:0f:d3:0e"

if [[ "$($mac)" = 'f0:79:60*' ]]
then
  echo "true"
else
  echo "false"
fi

ifステートメント内で呼び出す必要があります"$($mac)"。それ以外の場合、変数は置き換えられません。

ベストアンサー1

[[...]]BusyBox(ash shell)を使用しているため、スクリプトはシェルが認識しない構文()を使用しているようです。また"$($mac)"、に変更する必要があります$mac

BusyBoxで動作する修正版は次のとおりです(Sparkのウサギの耳の答えの代わりに)。

#!/bin/sh

mac="f0:79:60:0f:d3:0e"

if [ -z "${mac##f0:79:60*}" ]
then
    echo "true"
else
    echo "false"
fi

パターンに一致する可能な最大部分を削除するときは、結果の文字[ -z "${mac##f0:79:60*}" ]列が空であることを確認してください。$macf0:79:60*

おすすめ記事