2016-04-12 3 views
2

Wie verweisen Sie das Argument Piped in?bash verweisen auf das Argument/die Variable piped in

Zum Beispiel, wenn Sie einen Code test.sh wie unten

#!/bin/bash 
echo $1 

haben, wenn Sie ./test.sh abcd.txt laufen, werden Sie abcd.txt auf dem Bildschirm gedruckt.

Aber wenn ich ls *.txt | ./test.sh versuche, bekam ich alle Echos Leerzeilen.

+2

STDIN! = Befehlszeilenargumente. – Biffen

Antwort

3

Sie versuchen xargs verwendet, könnte:

find . -type f -name \*.txt -printf "%p\0" | xargs -0 -I xxx ./test.sh xxx 
+0

@EtanReisner danke! Ich erinnere mich, dass ich einmal in Schwierigkeiten geriet, ohne '' '... Ich merke einmal auch die -I Sache, aber ich habe keine Informationen darüber gefunden. Ich habe vor, das weiter zu testen. –

+0

@EtanReisner die Antwort wurde nach den Tests bearbeitet, das '-I xxx' wurde beibehalten, sonst schlägt dies fehl. –

1

Data "verrohrt in" ist STDIN, aber die sind nicht Befehlszeilenargumente. Hier ist ein Beispiel jede Zeile von STDIN Druck:

#!/usr/bin/env bash 
while read line; do 
    echo "Line: $line" 
done 

Es gibt viele Optionen an den Bash read Befehl. Lesen Sie den Abschnitt SHELL BUILTIN COMMANDS auf der Manpage für weitere Informationen.