質問
ディレクトリを参照する$TEST
という環境変数があります
私のbashスクリプトには、$VARTEST
という変数があります。これは$TEST/dir/file
今、grep somestring $VARTEST
で指定されたファイルをgrepしたいので、次のようにします:
{}
しかし、それは""
をそのディレクトリに変換しません
''
、<=>、および<=>のさまざまな組み合わせを試しましたが、成功しませんでした
解決
欲しいと思う
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"
所属していません StackOverflow