15

4 行目のエラーはどこにありますか?

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

== は単一ブラケット比較 ([ ]) には使用できません。代わりに single = を使用してください。また、展開を防ぐために変数を引用符で囲む必要があります。

if [ "$bn" = README ]; then

[[ ]] を使用すると、それが適用され、最初の引数を引用する必要がなくなります。

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

スクリプトの先頭に次を追加します。

#! /bin/bash

bash では、一重括弧内で使用する場合と== 同じです。=ただし、これは移植性がありません。#! /bin/bashしたがって、スクリプトの先頭に置くことで、スクリプトのインタープリターとして bash を使用するようシェルに明示的に指示する必要があります。

または、 を使用して文字列比較を行います=。二重括弧内で使用した場合と単一括弧内で使用した場合では、==演算子の動作が異なることに注意してください (リンクを参照)。

于 2013-08-07T13:21:20.687 に答える