1

現在のディレクトリで単一のファイルを検索する bash スクリプトを作成しようとしています。ファイルは後で使用されますが、私はそこに助けを必要としません。ls と grep を使用してみましたが、うまくいきません。私は bash を使用する初心者です。

#!/bin/sh
#Here I need smt like
#trFile = ls | grep myString (but I get file not found error)
echo $trFile
4

5 に答える 5

1

次のように、シェル ワイルドカードを使用します。

ls *${pattern}*

そして、結果を変数に格納するには、それを構造体の中に入れ$()ます (うまくネストされない非推奨の機能を使用したい場合は、非推奨のバッククォートを使用することもできます)。

var=$( ls *${pattern}* )

または、あなたの ls | を入れてください。そこにgrepします(しかし、それは悪い習慣です、IMHO):

var=$( ls | grep -- "$pattern" )
于 2012-07-11T02:21:50.997 に答える
0

私はあなたがこのようなものを探していると信じています:

    #!/bin/sh
    trFile=`ls | grep "$myString"`

コマンドを実行し、その出力をリダイレクト/保存するには、コマンドをバッククォートで囲む必要があります。私の例のように、出力、等号、およびバックティックを格納する変数は一緒にする必要があります。お役に立てれば。

于 2012-07-11T02:21:53.690 に答える
0
#!/bin/sh
#
trfile=$( ls | grep myString )
echo $trfile

$( xxx ) により、コマンドが実行され、出力が返されます。

于 2012-07-11T02:22:03.520 に答える
0

これを試してみてください。あなたがやろうとしていることは、シェル変数へgrepの出力を介してpingからファイル名のキャプチャを取得することだと思う場合は、これを試してください:ls

#!/bin/sh

trFile=`ls | grep "name_of_file"`
echo $trFile

コマンドを囲むバックティック演算子の使用に注意してください。この場合、出力が何であれ、キャプチャされます。

于 2012-07-11T02:22:42.563 に答える