こんな些細なことに 1.5 時間も費やしたなんて信じられません。ファイルをgrepし、出力を変数に保存し、変数をSTDOUTにエコーする非常に単純なシェルスクリプトを作成しています。
コマンドラインで正規表現を使用してgrepコマンドを確認しましたが、正常に動作します。しかし、何らかの理由で、grep コマンドはシェル スクリプト内では機能しません。
これが私が書いたシェルスクリプトです:
#!/bin/bash
tt=grep 'test' $1
echo $tt
次のコマンドでこれを実行しました: ./myScript.sh testingFile
. 空行を出力するだけです。
- すでに chmod を使用して、スクリプトを実行可能にしました。
- PATH 変数が含ま
/bin
れていることを確認しました。 echo $SHELL
与えることを確認した/bin/bash
- 必死になって、次のすべての組み合わせを試しました。
tt=grep 'test' "$1"
echo ${tt}
- コマンドライン引数をまったく使用せず、ファイル名をハードコーディングする
tt=grep 'test' testingFile
- 私はこれを見つけました:grepはbashスクリプト内で失敗しますが、コマンドラインでは機能し
dos2unix
、可能なキャリッジリターンを削除するためにも使用されます. - また、次のような grep オプションを使用しようとすると、:
tt=grep -oE 'test' testingFile
というエラーが表示されます./out.sh: line 3: -oE: command not found
。 - 狂ってる。