加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我的bash数组出了什么问题?

发布时间:2020-12-16 01:10:55 所属栏目:安全 来源:网络整理
导读:任何人都可以告诉我为什么这个bash脚本工作,如果我剪切并粘贴到终端但抛出“server_prep.sh:7:语法错误:”(使用$sudo sh server_prep.sh启动时出现“意外”? #!/bin/sh#Packagesapt-get -y install ssh libsqlite3-dev ruby-full mercurial#Gemsrequired
任何人都可以告诉我为什么这个bash脚本工作,如果我剪切并粘贴到终端但抛出“server_prep.sh:7:语法错误:”(使用$sudo sh server_prep.sh启动时出现“意外”?
#!/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循环中的空格分隔字符串.只需删除作业中的括号并在其周围加上引号(并删除等号周围的空格,如黑客建议的那样)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读