我想通过管道或其他方法将参数传递给此脚本中的读取命令。
脚本中的命令是
read -p "Change Parameters?
while [ $REPLY != "n" ]
do
if [ $REPLY == "a" ]
then
..
..
if [ $REPLY =="j" ]
..
done
如果有任何用途
,我的脚本第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传递给此命令,并让脚本一直持续到最后。
答案 0 :(得分:2)
您的管道是错误的方法,将n
传递给您需要编写的脚本
echo "n" | ./script argument1 argument2
另一个例子:
echo "abcd" | { read -p "Change Parameters?" b; echo $b; }
输出:
abcd
在第二个示例中,{ ... }
部分是您的脚本,echo "abcd"
通过管道传输到脚本,read
获取" abcd" (未显示提示Change parameters?
),将其保存在变量$b
中,然后回显$b
。
答案 1 :(得分:2)
如果您不想按照回音方式(回显并将其传递给您的脚本),您只需要更改命令:
./script argument1 argument2 | bash /dev/stdin "n"
要
./script argument1 argument2 <<<"n"
或者
./script argument1 argument2 <<<"$var"