Ich versuche, ein "Lambda" -Stil WHERE Skript zu erstellen.Wie kann ich Bash IF [[]] aus String bewerten lassen?
Ich möchte LambdaWHERE piped Eingang nehmen und es übergeben, wenn Bedingung nach gegeben als Argumente erfüllt ist. Wie bei xargs verwende ich {}, um darzustellen, was in der Pipe ankommt.
Ich nenne Kommando:
ls -d EqAAL * | lambdaWHERE.sh -f {}/INFO_ACTIVETICK
ich die Ordnernamen durchlaufen wollen, wenn sie eine Datei namens INFO_ACTIVETICK enthalten
Hier ist das Skript:
#!/bin/sh
#set -x
ARGS=$*
while read i
do
CMD=`echo $ARGS | sed 's/{}/'$i'/g'`
if [[ $CMD ]]
then
echo $i
fi
done
Aber wenn ich es ein mysteriöses laufen "-n" erscheint ...
$ 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
Wie kann ich das Bit in der [[]] richtig bekommen?
aber erkennen, dass dies zu tun wird es unmöglich ** ** machen conditionals zu verwenden, die Leerzeichen eingebettet erfordern, Kleckse usw., wie sie von der Shell erweitert werden. –
Großartig. Das funktioniert genau so, wie ich es gerne hätte - danke – ManInMoon
@EtanReisner Das kannst du mit Zitat und Flucht umgehen. – Sylwester