我想創建一個「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