Bashスクリプトのエスケープパラメータ?

Bashスクリプトのエスケープパラメータ?

渡された引数の1つが有効なグループであることを確認したいbashスクリプトを作成しています。

ケーブルがあります。

if [ `grep -c -e '\b$2\b' /etc/group` -eq 0 ]; then
  echo "Error: $2 is not a valid group."
else

これは、常に有効なグループが無効であることを知らせます。

私の考えでは警察アウトだと思います。というグループを検索しているようです$2。エラーメッセージには、渡されたパラメータが正しく表示されます。しかし、$2バックティック内部を正しく脱出しているかどうかはわかりません。

この行を機能させるにはどうすればよいですか?

ベストアンサー1

grep'オプションを使用する方が-qコマンド置換よりも効率的です。

if ! grep -q -e "^$2:" /etc/group; then
    echo "Error: $2 not a valid group" >&2
fi

問題は、一重引用符(')がシェル変数拡張($)を妨げるということです。二重引用符()を使用する必要があります"

おすすめ記事