gpt4 book ai didi

bash - 我的 bash 数组有什么问题?

转载 作者:行者123 更新时间:2023-11-29 08:55:43 25 4
gpt4 key购买 nike

如果我将 bash 脚本剪切并粘贴到终端但抛出“server_prep.sh: 7: 语法错误:”(“unexpected”当使用 $ sudo sh server_prep.sh 启动时,谁能告诉我为什么这个 bash 脚本可以工作?

#!/bin/sh

#Packages
apt-get -y install ssh libsqlite3-dev ruby-full mercurial

#Gems
required_gems = ( rake rails sqlite3-ruby )

#Set up directories
[ ! -d /var/www ] && mkdir /var/www
[ ! -d /var/www/apps ] && mkdir /var/www/apps

#install gems manually
if ! which gem >/dev/null; then
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar xvfz rubygems-1.3.5.tgz
ruby rubygems-1.3.5/setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gem
gem update --system

#Tidy Up
rm -rf rubygems-1.3.5.tgz rubygems-1.3.5
fi

#Install required gems
for required_gem in "${required_gems[@]}"
do
if ! gem list | grep $required_gem >/dev/null; then
gem install $required_gems
fi
done

提前致谢!

最佳答案

你在使用 ubuntu 吗?

那么您应该将顶部的 #!- 行更改为 #!/bin/bash 因为/bin/sh 是一个非常有限的 shell。

这可以解释为什么可以在终端(shell 是 bash)而不是 shell 脚本(由/bin/sh 运行)中运行。

出于性能原因,他们在几个版本之前对此进行了更改 - 大多数人不需要 shell 脚本的完整 bash 功能,而且这个受限的 shell 在启动时要快得多。

编辑: 我刚刚注意到您甚至不必使用数组,因为您无论如何都在 for 循环中将它转换为以空格分隔的字符串。只需删除作业中的括号并在其周围加上引号(并删除等号周围的空格,如黑客所建议的那样)

关于bash - 我的 bash 数组有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com