【问题标题】:How to Pass Arguments/Input To a Bash Command at the Time of its Issuance [duplicate]如何在发布时将参数/输入传递给 Bash 命令 [重复]
【发布时间】:2017-12-01 05:30:45
【问题描述】:

我想自动化虚拟专用服务器 (Debian) 的初始安装。为此,我正在编写一个 bash 脚本,它发出许多设置日期、时区和许多其他此类内容的命令。以下是其中之一:

sudo dpkg-reconfigure tzdata

对于上面的命令,我想先进入亚洲,然后进入加尔各答。 是否可以在发出命令时给出类似下面的内容?

printf "Asia\nKolkata" | sudo dpkg-reconfigure tzdata

代替输入,每次执行命令时,我们可以采取上述动作直接为所有命令传递输入吗?这样我们就可以运行一次 bash 脚本,稍后再回来查看服务器是否已准备好所有必要的软件。

请帮忙。

【问题讨论】:

  • 我确信某些现有 解决方案是可用的。你正在重新发明一些轮子。当我租用我的 VPS 时,它被明智地自动配置。所以你的问题真的是一些XY problem
  • 我猜VPS安装只是复制了一些主映像,并在/etc/中填充了很少的文件。你的方法闻起来很糟糕。

标签: linux bash debian


【解决方案1】:

对于这种特殊情况,我不会尝试自动化 dpkg-reconfigure tzdata,但我会做适当的操作(填充 /etc/timezone 文件),更容易自动化

  echo Asia/Kolkata > /etc/timezone

顺便说一句,您可以考虑使用TCL expect,但我会尝试自动化配置的结果

也许您可以考虑为您自己的 Debian 衍生产品制作自己的 .iso 映像。也许你需要像Docker 这样的容器化。

或者只是识别/etc/ 下需要配置的文件(没有那么多)。你甚至可以让你的 Debian .deb package 安装它们(你希望的默认值)。

另请参阅this answer(可能是您真正需要的)。

【讨论】:

  • 嗯。 expect 是我要建议的。看起来它是操作的必备品。
  • 我认为它对于这项任务来说太笼统了。我不建议在这种情况下使用它。
  • 对于这个,是的,太笼统了。但是expect 是提到自动化时想到的名字之一。
猜你喜欢
  • 2018-11-11
  • 2020-07-30
  • 2016-10-18
  • 2021-11-25
  • 2012-07-08
  • 2018-02-13
  • 2021-08-26
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多