質問

ディレクトリを参照する$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"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top