Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grep,ls在bash中获取文件_Bash_Unix_Grep - Fatal编程技术网

使用grep,ls在bash中获取文件

使用grep,ls在bash中获取文件,bash,unix,grep,Bash,Unix,Grep,我正在尝试编写一个bash脚本,它将在当前目录中找到一个文件。该文件将在以后使用,但我不需要那里的帮助。我试过使用ls和grep,但是没有用,我是一个使用bash的新手 #!/bin/sh #Here I need smt like #trFile = ls | grep myString (but I get file not found error) echo $trFile 使用shell通配符,如中所示 ls *${pattern}* 并且,要将结果存储在变量中,请将其放入$()结构

我正在尝试编写一个bash脚本,它将在当前目录中找到一个文件。该文件将在以后使用,但我不需要那里的帮助。我试过使用ls和grep,但是没有用,我是一个使用bash的新手

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

使用shell通配符,如中所示

ls *${pattern}*
并且,要将结果存储在变量中,请将其放入
$()
结构中(如果您喜欢使用嵌套不好的不推荐使用的功能,也可以使用不推荐使用的反勾号)

或者,把你的ls | grep放在那里(但这是一个糟糕的做法,IMHO):


使用shell通配符,如中所示

ls *${pattern}*
并且,要将结果存储在变量中,请将其放入
$()
结构中(如果您喜欢使用嵌套不好的不推荐使用的功能,也可以使用不推荐使用的反勾号)

或者,把你的ls | grep放在那里(但这是一个糟糕的做法,IMHO):


我相信你正在寻找这样的东西:

    #!/bin/sh
    trFile=`ls | grep "$myString"`
为了运行命令并重定向/存储其输出,您需要将命令放在两个倒勾之间。存储输出、等号和反勾号的变量必须在一起,如我的示例所示。
希望这能有所帮助。

我相信您正在寻找这样的产品:

    #!/bin/sh
    trFile=`ls | grep "$myString"`
#!/bin/sh
#
trfile=$( ls | grep myString )
echo $trfile
为了运行命令并重定向/存储其输出,您需要将命令放在两个倒勾之间。存储输出、等号和反勾号的变量必须在一起,如我的示例所示。 希望这有帮助

#!/bin/sh
#
trfile=$( ls | grep myString )
echo $trfile
$(xxx)导致执行中的命令并返回输出


$(xxx)导致执行内的命令并返回输出。

试试这个,如果我猜你想做的是,通过将
ls
输出到shell变量中,从
grep
ping获取文件名的捕获,试试这个:

#!/bin/sh

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

请注意,在命令周围使用了back tick操作符,在本例中,将捕获任何输出。

尝试此操作,如果我猜您要做的是,通过将
ls
输出到shell变量中,从
grep
ping获取文件名的捕获,请尝试以下操作:

#!/bin/sh

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

请注意,在命令周围使用了back tick操作符,在本例中,将捕获任何输出。

使用ls的输出将在您最不期望的时候生效。最好使用Globbing。

使用ls的输出将在您最不期望的时候起作用。最好使用Globbing。
=
周围的空格将导致此中断。
=
周围的空格将导致此中断。
ls
不打算以这种方式使用。改用globbing。无需使用带或不带
ls
grep
。Globbing将选择您感兴趣的文件集。您可以将glob保存在数组中:
trFile=(*myString*)
或直接迭代:
用于*myString*中的文件;不回显“$file”;完成
。它最终会咬你的屁股。
ls
不打算这样使用。改用globbing。无需使用带或不带
ls
grep
。Globbing将选择您感兴趣的文件集。您可以将glob保存在数组中:
trFile=(*myString*)
或直接迭代:
用于*myString*中的文件;不回显“$file”;完成
。它最终会咬你的屁股的。我知道,但这对行动来说是完全另一个教训。我只是回答给出的问题。我不想压倒这个可怜的家伙。我们都从某个地方开始,我们都学会了技巧。不要让这个可怜的家伙气馁。{微笑}“不要让可怜的人泄气”我应该说很有激励性。{咧嘴笑}我会帮助任何愿意尝试的人。。。你做得很好。是的,@ghoti有一个很好的观点,但你必须使用你所知道的来构建更好的东西。作为一个不得不维护由一个只“使用他们所知道的”的人编写的重要shell脚本的人,我认为值得指出的是,有更好的东西,所以有人不会停止学习“它对我有用”。)我知道,但这是整个行动的另一个教训。我只是回答给出的问题。我不想压倒这个可怜的家伙。我们都从某个地方开始,我们都学会了技巧。不要让这个可怜的家伙气馁。{微笑}“不要让可怜的人泄气”我应该说很有激励性。{咧嘴笑}我会帮助任何愿意尝试的人。。。你做得很好。是的,@ghoti有一个很好的观点,但你必须使用你所知道的来构建更好的东西。作为一个不得不维护由一个只“使用他们所知道的”的人编写的重要shell脚本的人,我认为值得指出的是,有更好的东西,所以有人不会停止学习“它对我有用”。)