将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主义,所以什么有效什么无效并不总是显而易见的。