Answers:
命令替换。
./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
要完成@ 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