【发布时间】:2017-07-30 21:50:00
【问题描述】:
我在脚本中使用以下管道作为变量:
match=$( ls | grep -i "$search")
然后在 if 语句中使用它:
if [ "$match" ]; then
echo "matches found"
else
echo "no matches found"
fi
如果我不想使用 find,还有什么替代方法? ShellCheck推荐:
ls /directory/target_file_pattern
但我没有正确的语法来获得相同的结果。 当 if 语句 没有匹配项时,我也希望 no output 起作用。
【问题讨论】:
-
您为什么不想使用
find?这是它擅长的。 -
我不想进行递归搜索并且代码相当简单,我喜欢 find,但我无法说服使用 finds
-maxdepth -
使用 ls pathtofile > /dev/null 2> &1 然后使用退出状态,即美元?在你的 if 语句中。
-
@RamanSailopal 在这种情况下更好
test -f,但我认为他甚至还没有弄清楚 glob、BRE 和 ERE 之间的区别。 -
进一步思考,这个问题可能没有足够的信息来回答——我们需要知道模式是什么样的。
标签: linux bash if-statement grep ls