実は私は次のような宿題をしています。
1:引数が有効なシェル変数名の場合は「yes」を印刷し、それ以外の場合は「no」を印刷するvalidというプログラムを作成します。
私がやっていることは、 "grep"コマンドを使用して[0-9] *のような正規表現を含むいくつかの値を探したいことです。しかし、 "grep"コマンドはデフォルトでファイルの特定の行をキャプチャするので、その式を含む私が入力したパラメータからいくつかの値を取得する方法がわかりません。どんな助けでも大変感謝します。
ベストアンサー1
これはgrepを使用しませんが、参照のためにbashの=~
条件付き演算子を使用してスクリプトの最初の引数を正規表現クラスと比較できますname
。バッシュリファレンスマニュアルように:
文字、数字、下線のみで構成され、文字または下線で始まる単語です。名前はシェル変数と関数名として使用されます。
$ cat isvarname
#!/bin/bash
if [ "$#" -ne 1 ]
then
echo "Usage: $0 a-string"
exit 1
fi
if [[ "$1" =~ ^[[:alpha:]_][[:alnum:]_]*$ ]]
then
echo yes
else
echo no
fi