2016-07-28 20 views
0

Also versuche ich ein Skript zu bekommen, an dem ich arbeite, um ein anderes Skript in verschiedenen Verzeichnissen mit verschiedenen Argumenten auszuführen, wie in einer Textdatei definiert. Hier ist ein Teil meiner Code:sed - Getrennte Anführungszeichen und Argumente

for bline in $(cat "$file"); do 
    lindir=$() 
    linarg=$() 
    echo "dir: ${lindir}" 
    echo "arg: ${linarg}" 
done 

Lassen Sie uns sagen, dass ich eine Zeile in der Datei haben, sagt dazu:

"./puppies" -c=1 -u=0 -b=1 

Wie kann ich eine Leistung von ./puppies für lindir und eine Leistung von -c=1 -u=0 -b=1 für linarg bekommen ?

Antwort

1

Das

while read -r bline; do 
    lindir="$(cut -d ' ' -f 1 <<<"$bline")" 
    linarg="$(cut -d ' ' -f 2- <<<"$bline")" 

    printf "dir: %s\n" "$lindir" 
    printf "arg: %s\n" "$linarg" 
done <"$file" 

ist Wenn Sie in einer Schale sind, die nicht "hier-strings" versteht:

lindir="$(printf "%s" "$bline" | cut -d ' ' -f 1 )" 
linarg="$(printf "%s" "$bline" | cut -d ' ' -f 2-)" 
Verwandte Themen