我有以下小脚本:
#!/usr/bin/env bash
packages_installed=($(apt-cache -q pkgnames | tr - _ | tr . _))
echo $packages_installed
if [ ${#packages_installed[@]} -eq 0 ]; then
echo "+unable_to_find_list_of_installed_packaged"
logger -p user.error -t find_installed_packages "$(hostname -f) was unable to determine list of installed packages using apt-cache"
else
for pkg in "${packages_installed[@]}"
do
echo "+installed_package_$pkg"
done
fi
运行此功能:
root@olympus:~# sh test.sh
test.sh: 3: test.sh: Syntax error: "(" unexpected
这似乎表明我在生成已安装的软件包列表的行上犯了一个错误。但是,我很确定这就是您将命令输出输入数组的方式吗?
感觉就像我缺少愚蠢的东西。
感觉就像我错过了一些愚蠢的东西。
确实。
root@olympus:~# sh test.sh
test.sh: 3: test.sh: Syntax error: "(" unexpected
您正在使用sh
执行导致错误的脚本。您的脚本看起来不错,数组分配不应该构成任何问题。
使用bash
代替执行它。