15

第四行的错误在哪里?

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
4

2 回答 2

21

您不能将 == 用于单括号比较 ([ ])。请改用单个 =。此外,您必须引用变量以防止扩展。

if [ "$bn" = README ]; then

如果您使用 [[ ]],这可能适用并且您不需要引用第一个参数:

if [[ $bn == README ]]; then
于 2013-08-07T12:08:20.333 回答
3

将以下内容添加到脚本的顶部:

#! /bin/bash

在 bash 中,与在单括号内使用时== 相同。=但是,这不是便携式的。#! /bin/bash因此,您应该通过将 bash 放在脚本的顶部来明确告诉 shell 使用 bash 作为脚本的解释器。

或者,使用=. 请注意,在双括号内使用的运算符与在单括号内使用时的==行为不同(请参阅链接)。

于 2013-08-07T13:21:20.687 回答