将bash命令输出获取到shell脚本中的数组中

将bash命令输出获取到shell脚本中的数组中,bash,Bash,我有以下小脚本: #!/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 fi

我有以下小脚本:

#!/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
执行它

感觉我错过了一些愚蠢的事情

的确如此

root@olympus:~# sh test.sh
test.sh: 3: test.sh: Syntax error: "(" unexpected
您正在使用
sh
执行导致错误的脚本。您的脚本看起来很好,数组分配应该不会带来任何问题


使用
bash
执行它。

唉,我现在显然觉得自己像个白痴。谢谢你,伙计。为这里最愚蠢的帖子道歉…@Khushil从不低估其他人的愚蠢:)如果你让你感觉更好,
bash
即使被调用为
sh
,仍然接受一些bash主义,所以什么有效什么无效并不总是显而易见的。唉,我现在显然觉得自己是个白痴。谢谢你,伙计。为这里最愚蠢的帖子道歉…@Khushil永远不会低估别人的愚蠢:)如果你让你感觉好一点,
bash
即使被调用为
sh
,也会接受一些bash主义,所以什么有效什么无效并不总是显而易见的。