第四行的错误在哪里?
if [ $bn == README ]; then
如果我把它写成
,我仍然会得到if [ $bn == README ]
then
或
if [ "$bn" == "README" ]; then
上下文:
for fi in /etc/uwsgi/apps-available/*
do
bn=`basename $fi .ini`
if [ $bn == "README" ]
then
echo "~ ***#*** ~"
else
echo "## Shortend for convience ##"
fi
done
答案 0 :(得分:12)
您不能使用==进行单括号比较([])。使用single =代替。您还必须引用变量以防止扩展。
if [ "$bn" = README ]; then
如果你使用[[]],那可能适用,你不需要引用第一个参数:
if [[ $bn == README ]]; then
答案 1 :(得分:3)
将以下内容添加到脚本的顶部:
#! /bin/bash
在bash中,==
is the same作为=
在单括号内使用时。然而,这不是便携式的。所以你应该明确告诉shell使用bash作为脚本的解释器,将#! /bin/bash
放在脚本的顶部。
或者,使用=
进行字符串比较。请注意,==
运算符在双括号内使用时的行为与不同比在单括号内部使用>>。