如何使用管道将参数传递给bash脚本?
我想通过管道或其他方法将参数传递给脚本中的read命令 我在脚本中的命令是如何使用管道将参数传递给bash脚本?,bash,unix,stdin,pipeline,Bash,Unix,Stdin,Pipeline,我想通过管道或其他方法将参数传递给脚本中的read命令 我在脚本中的命令是 read -p "Change Parameters? while [ $REPLY != "n" ] do if [ $REPLY == "a" ] then .. .. if [ $REPLY =="j" ] .. done read命令出现在脚本的第48行,如果有任何用处的话 我试过了 ./script argument1 argument2 | bash /de
read -p "Change Parameters?
while [ $REPLY != "n" ]
do
if [ $REPLY == "a" ]
then
..
..
if [ $REPLY =="j" ]
..
done
read命令出现在脚本的第48行,如果有任何用处的话
我试过了
./script argument1 argument2 | bash /dev/stdin "n"
导致
Change Parameters? /dev/stdin: line 1: Default: command not found
/dev/stdin: line 2: a: command not found
/dev/stdin: line 3: b: command not found
/dev/stdin: line 4: c: command not found
/dev/stdin: line 5: d: command not found
/dev/stdin: line 6: e: command not found
/dev/stdin: line 7: f: command not found
/dev/stdin: line 8: g: command not found
/dev/stdin: line 9: h: command not found
/dev/stdin: line 10: i: command not found
/dev/stdin: line 11: j: command not found
/dev/stdin: line 12: n: command not found
然后停下来
我只想把字母n传递给这个命令,让脚本继续到最后。你的管道走错了方向,把
n
传递给你需要写的脚本
echo "n" | ./script argument1 argument2
另一个例子:
echo "abcd" | { read -p "Change Parameters?" b; echo $b; }
输出:
abcd
在第二个示例中,
{…}
部分是您的脚本,echo“abcd”
通过管道传输到脚本,read
获取“abcd”(提示更改参数?
未显示),将其保存在变量$b
中,然后,$b
被回送。您的管道是错误的,要将n
传递给需要编写的脚本
echo "n" | ./script argument1 argument2
另一个例子:
echo "abcd" | { read -p "Change Parameters?" b; echo $b; }
输出:
abcd
在第二个示例中,
{…}
部分是您的脚本,echo“abcd”
通过管道传输到脚本,read
获取“abcd”(提示更改参数?
未显示),将其保存在变量$b
中,然后将$b
进行回显。<(回显某些内容并将其传输到脚本)您只需更改命令:
./script argument1 argument2 | bash /dev/stdin "n"
到
/script argument1 argument2如果您不想采用回送方式(回送内容并将其传输到脚本),只需更改命令:
./script argument1 argument2 | bash /dev/stdin "n"
到
/script argument1 argument2