10

こんな些細なことに 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
  • 狂ってる。
4

1 に答える 1