将格式输入字符串转换为bash命令

时间:2016-09-16 01:56:13

标签: linux bash

我想硬编码一些输入到我的bash脚本命令。例如,我有一个像这样的bash脚本:

#! /bin/bash
apt-get install python

我希望硬编码yenter作为此bash脚本中apt-get命令的输入,因为有时用户可能会要求确认安装空间。我知道我可以做到

apt-get install python <<< 'y'

传递字符串输入y,但我还可以输入特殊格式,例如换行符&#39; \ n&#39;用这种方法?谢谢!

2 个答案:

答案 0 :(得分:2)

所有herestrings都会自动被换行符终止,因此这可能无法达到你想要的效果。 (许多程序会查看他们的输入是否来自TTY,并根据结果更改是否以及如何提示;其他程序会读取来自用户直接来自TTY的提示,因此绕过管道内容,heredocs和herestrings完全)。

那就是说,对于这个问题的字面答案:

apt-get install python <<<$'y\n'

您也可以使用heredoc:

apt-get install python <<EOF
y

EOF

那就是说,对于apt-get的具体情况,不要这样做!

apt-get install -y python

......确实是最好的做法。 (对于系统管理命令,一般来说,批处理或自动使用通常由开发人员预期,因此很少需要最终用户输入 - 在每个程序的文档中查找--batch,{等参数{1}},--force--always;指定以其他方式提示的项目的环境变量;或通过让stdin不是TTY而激活的行为。

答案 1 :(得分:2)

Clock是正确的方法。根据手册页:

  

-y, - 是, - assume-yes
  自动提示是;假设&#34;是&#34;作为所有提示的答案并以非交互方式运行。如果出现不良情况,例如更改保留的包,尝试安装未经身份验证的包或删除              必要的包发生然后apt-get将中止。配置项:APT :: Get :: Assume-Yes。