जवाबों:
./Myscript.sh "$(cat text.txt)"
प्रयत्न,
$ cat comli.txt
date
who
screen
wget
$ cat comli.sh
#!/bin/bash
which $1
$ for i in `cat comli.txt` ; do ./comli.sh $i ; done
ताकि आप मूल्यों के लिए एक के बाद एक प्रवेश कर सकते हैं comli.sh
से comli.txt
।
प्रक्रिया प्रतिस्थापन
./Myscript.sh <(cat text.txt)
उदाहरण देखें https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution
मैपफाइल के साथ स्टडिन को पढ़ने से आप स्थितीय मापदंडों को फिर से सेट कर सकते हैं।
#!/bin/bash
[[ -p /dev/stdin ]] && { mapfile -t; set -- "${MAPFILE[@]}"; }
for i in $@; do
echo "$((++n)) $i"
done
("$ @" उद्धृत for
करने के बजाय लूप लाइनें बनाएंगे )।
$ cat test.txt | ./script.sh
1 one
2 two
3 tree
@ Bac0n को पूरा करने के लिए जो IMHO प्रश्न का सही उत्तर देने के लिए एकमात्र है, यहां एक लघु-लाइनर है जो आपकी स्क्रिप्ट तर्क सूची में पाइप किए गए तर्कों को प्रस्तुत करेगा:
#!/bin/bash
args=$@
[[ -p /dev/stdin ]] && { mapfile -t; set -- "${MAPFILE[@]}"; set -- $@ $args; }
echo $@
उदाहरण का उपयोग करें:
$ ./script.sh arg1 arg2 arg3
> arg1 arg2 arg3
$ echo "piped1 piped2 piped3" | ./script.sh
> piped1 piped2 piped3
$ echo "piped1 piped2 piped3" | ./script.sh arg1 arg2 arg3
> piped1 piped2 piped3 arg1 arg2 arg3