我正在尝试编写一个bash脚本,它可以在当前目录中找到一个文件。该文件将在稍后使用,但我不需要那里的帮助。我尝试使用ls和grep,但它不起作用,我是一个使用bash的新手。
#!/bin/sh
#Here I need smt like
#trFile = ls | grep myString (but I get file not found error)
echo $trFile
答案 0 :(得分:1)
使用shell通配符,如
ls *${pattern}*
并且,要将结果存储在变量中,请将其放在$()
结构中(如果您喜欢使用不能很好地嵌套的弃用功能,也可以使用弃用的反引号)
var=$( ls *${pattern}* )
或者,把你的ls | grep在那里(但这是不好的做法,恕我直言):
var=$( ls | grep -- "$pattern" )
答案 1 :(得分:0)
我相信你正在寻找这样的东西:
#!/bin/sh
trFile=`ls | grep "$myString"`
为了运行命令并重定向/存储其输出,您需要将命令放在反引号之间。存储输出,等号和反引号的变量需要在一起,如我的例子中所示。 希望这会有所帮助。
答案 2 :(得分:0)
#!/bin/sh
#
trfile=$( ls | grep myString )
echo $trfile
$(xxx)导致执行命令并返回输出。
答案 3 :(得分:0)
试试这个,如果我猜你要做的是,通过grep
的输出将ls
ping的文件名捕获到shell变量中,试试这个:< / p>
#!/bin/sh
trFile=`ls | grep "name_of_file"`
echo $trFile
请注意命令周围的反向操作符的使用,在这种情况下,输出将被捕获。
答案 4 :(得分:0)
使用ls的输出会在你最不期望的时候咬人。更好地使用Globbing。 http://tldp.org/LDP/abs/html/globbingref.html