sup*_*nee 3 linux bash shell sh
我有一个bash脚本有几个问题,是否可以自动填写答案?
./script.sh install
Run Code Online (Sandbox Code Playgroud)
答案顺序 y 2 1 n n
我怎么能用bash做到这一点?
编辑:是否可以只传递第一个答案?
echo "y" | install
Run Code Online (Sandbox Code Playgroud)
并让用户选择回答下一个问题?
我会把这里的文件传递给stdin:
./script.sh install <<EOF
y
2
1
n
n
EOF
Run Code Online (Sandbox Code Playgroud)
如果你想在一行上,你也可以使用echo:
echo -e "y\n2\n1\nn\nn" | ./script.sh install
Run Code Online (Sandbox Code Playgroud)
但是,我更喜欢这里的文档解决方案,因为它是恕我直言更具可读性.
另一种方法是使用here 字符串(它的好处是消除了单行管道,但不是子外壳):
./script.sh install <<<$(printf "y\n2\n1\nn\nn\n")
Run Code Online (Sandbox Code Playgroud)
您还可以依靠 printf 技巧通过单个格式说明符打印所有元素并使用进程替换(或与上面的 here 字符串语法一起使用):
./script.sh install < <(printf "%c\n" y 2 1 n n)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |