3

これはすでに100万回実行されましたが、今回は機能しません。ファイルから「$TITLE」をgrepしようとします。コマンドラインでは機能しています。「$TITLE」変数は空ではありませんが、スクリプトを実行しても何も見つかりません。

*タイトルに複数の単語が含まれている

echo "$TITLE"
cat PAGE.$TEMP.2 | grep "$TITLE"

私が試したこと:

echo "cat PAGE.$TEMP.2 | grep $TITLE"

タイトルが空ではなく、ファイル名が実際に存在するかどうかを確認します

4

3 に答える 3

4

$TITLEファイルにない先頭または末尾の空白がないことを確認しますか?文字列を修正すると、実行前に空白が削除されるため、空白は表示されません。

たとえば、「1行目」を含むファイルの場合:

/home/user1> TITLE=' one '
/home/user1> grep "$TITLE" text.txt
/home/user1> cat text.txt | grep $TITLE
Line one

試してみてくださいecho "<$TITLE>"、またはecho "$TITLE"|od -xcそれはあなたが誤った文字を見つけることを可能にするでしょう。

于 2012-09-06T10:39:52.730 に答える
1

このコマンド

echo "cat PAGE.$TEMP.2 | grep $TITLE"

'cat'で始まる文字列をエコーし​​ます。コマンドは実行されません。あなたが欲しいだろう

echo "$( cat PAGE.$TEMP.2 | grep $TITLE )"

機能的には単純なものと同じですが

cat PAGE.$TEMP.2 | grep $TITLE

また、他の人が指摘しているように、cat;を使用して単一のファイルをパイプする必要はありません。grepファイルから問題なく読み取ることができます:

grep "$TITLE" "PAGE.$TEMP.2"

(デフォルトの動作は、パラメーターの展開が正しくないことを示すことができない限り、パラメーターの展開を引用することです。)

于 2012-09-06T12:01:34.710 に答える
0

私のために働く:

~> cat test.dat
abc
cda
xyz
~> export GRP=cda
~> cat test.dat | grep $GRP
cda

編集:

また、適切な使用方法grepは次のとおりです。

~> grep $GRP test.dat
于 2012-09-06T10:17:04.967 に答える