Sto*_*ord 4 command-line apt bash
众所周知,我们用来安装多个软件包的命令是:
apt install package1 package2 package3`
Run Code Online (Sandbox Code Playgroud)
在 Bash 脚本中使用以下方法:
packages="package1 package2 package3"
apt install "$packages"
Run Code Online (Sandbox Code Playgroud)
产生错误,指出无法找到该包。因此这是不正确的。
以下命令是否apt为每个包运行一次,或者它的工作方式是否不同?
apt install $(cat $packageFile)
Run Code Online (Sandbox Code Playgroud)
假设packageFile是一个文本文件,其中每行包含一个包名称。
我知道我可以使用一个数组并将所有包名称放入其中,然后使用for循环为每个包运行apt一次,但我想知道是否有一种方法可以使用 Bash 脚本安装所有包,apt仅运行一次。
谢谢。
使用数组的方法是正确的,但您需要正确定义数组。这意味着您需要使用复合语句(即圆括号)而不是双引号。\n事实上,您的命令首先不起作用的原因是因为它$packages被 shell 扩展,package1 package2 package3然后被读取为单个字符串 by apt,而不是单独的 as package1,package2 , package3。
因此,使用以下形式的复合赋值来定义数组:
\npackages=(package1 package2 package3)\nRun Code Online (Sandbox Code Playgroud)\n然后使用以下命令安装所有软件包:
\nsudo apt install "${packages[@]}"\nRun Code Online (Sandbox Code Playgroud)\n事实上,数组的任何元素都可以使用 , 来引用${array_name[index]},并且当索引为@,该单词将扩展到数组名称的所有成员。需要使用大括号以避免与 shell\xe2\x80\x99s 文件名扩展运算符发生冲突。
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |