$TEST
私のbashスクリプトのディレクトリを参照するという環境変数があり$VARTEST
ます $TEST/dir/file
で指定されたファイルをgrepしたい$VARTEST
ので、実行しようとしましたが、そのディレクトリに
grep somestring $VARTEST
変換されません$TEST
と のさまざまな組み合わせを試しましたが{}
、成功""
しませんでした''
$TEST
私のbashスクリプトのディレクトリを参照するという環境変数があり$VARTEST
ます $TEST/dir/file
で指定されたファイルをgrepしたい$VARTEST
ので、実行しようとしましたが、そのディレクトリに
grep somestring $VARTEST
変換されません$TEST
と のさまざまな組み合わせを試しましたが{}
、成功""
しませんでした''
私はあなたが欲しいと思います
eval grep somestring "$VARTEST"
あるいは
VARTEST_EVALUATED=$(eval echo $VARTEST)
grep "$SOMESTRING" "$VARTEST_EVALUATED"
しかし覚えておいてください(他の人がすでに言ったように):可能であれば使用
VARTEST="$TEST/foo/bar"
それ以外の
VARTEST='$TEST/foo/bar'
ある種の「遅延評価」が本当に必要な場合にのみ、2番目のものを使用してください...
警告、$VARTEST
悪意のあるコードが含まれている場合、これは危険な場合があります。
何かを一重引用符で囲みましたか?一重引用符は、変数が対応する値に変換されるのを防ぎます。ただし、二重引用符は機能します。例えば:
#!/bin/sh
TEST="/etc"
VARTEST="$TEST/passwd"
grep "$LOGNAME" "$VARTEST"