我想创建一个“Lambda”风格的WHERE脚本。如何让bash从字符串中评估IF [[]]?
我希望lambdaWHERE采用管道输入并将其传递通过,如果满足条件后作为参数给出。像xargs一样,我使用{}来表示管道下方的内容。
我打电话给我:
ls -d EqAAL * | lambdaWHERE.sh -f {}/INFO_ACTIVETICK
我想通过它们是否包含一个名为INFO_ACTIVETICK
这里文件通过文件夹名称是脚本:
#!/bin/sh
#set -x
ARGS=$*
while read i
do
CMD=`echo $ARGS | sed 's/{}/'$i'/g'`
if [[ $CMD ]]
then
echo $i
fi
done
但是当我运行它神秘“-n”出现...
$ ls -d EqAAL* | /q/lambdaWHERE.sh -f {}/INFO_ACTIVETICK
+ ARGS='-f {}/INFO_ACTIVETICK'
+ read i
++ echo -f '{}/INFO_ACTIVETICK'
++ sed 's/{}/EqAAL-1m/g'
+ CMD='-f EqAAL-1m/INFO_ACTIVETICK'
+ [[ -n -f EqAAL-1m/INFO_ACTIVETICK ]]
+ echo EqAAL-1m
EqAAL-1m
+ read i
如何获得[[]]中的位是否正确?
但要意识到,这样做将使** **不可能使用需要嵌入空格,水珠等等,因为它们会被shell扩展条件语句。 –
太好了。这完全符合我的愿望 - 谢谢 – ManInMoon
@EtanReisner你可以通过引用和转义来解决这个问题。 – Sylwester