0

これが私の問題です。スクリプトがあり、スクリプトが呼び出されたときに入力されるパラメーターがスクリプト内の変数名と一致することを確認したいと考えています。

例えば:

./valid foo <- スクリプト呼び出し

#!/bin/bash

PARAM=$1
VAR=/foo/

if grep -c $PARAM == $VAR
then
echo yes
fi

echo no

grep の使用が最悪です。スクリプト内で適切に使用する方法がわかりません。インターネットを精査した後、問題に関する具体的なフィードバックが必要だと思います。

ありがとう、

EA

4

3 に答える 3

3

これは堅牢ではありませんが、次のことができます。

if echo "$VAR" | grep -q "$PARAM"; then 

おそらく単純に行う方が良いでしょう:

if test "$VAR" = "$PARAM"; then

正規表現を照合しようとしている場合、bash は次のことを許可します。

if [[ "$VAR" =~ "$PARAM" ]]; then

$VAR正規表現に対して固定文字列を照合し$PARAMます。が正規表現の場合$VAR、引数の順序を逆にする必要があります。(つまり、[[ "$PARAM" =~ "$VAR ]].)

于 2013-02-25T21:14:10.333 に答える
0

宣言は名前の後に等号が続くため、スクリプト内を検索できます。

egrep "^ \ s * $ PARAM ="$0の場合
それから
    エコーはい
そうしないと
    エコーなし
fi
于 2013-02-25T21:42:22.490 に答える
0

変数をリストするには

set -o posix ; set

posixのことは、関数のリストを防ぎます。

スクリプトに対してローカルなパラメーターを分離するには、シェルから実行して結果を保存し、スクリプトから実行して出力を比較します

(set -o posix ; set) >/tmp/variables.before
(set -o posix ; set) >/tmp/variables.after
于 2013-02-25T21:54:14.847 に答える