如何使用管道将参数传递给bash脚本?

如何使用管道将参数传递给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命令

我在脚本中的命令是

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