Gdzie jest błąd na linii czwartej?Dlaczego otrzymuję niespodziewany błąd operatora w teście równości ciągi bash?
if [ $bn == README ]; then
który ja wciąż dostać jeśli piszę to jako
if [ $bn == README ]
then
lub
if [ "$bn" == "README" ]; then
Kontekst:
for fi in /etc/uwsgi/apps-available/*
do
bn=`basename $fi .ini`
if [ $bn == "README" ]
then
echo "~ ***#*** ~"
else
echo "## Shortend for convience ##"
fi
done
Z 'if [$ bn ==" README "]' powinno działać. – fedorqui
Próbowałem dokonać tej zmiany w oryginalnym skrypcie i nadal dostaję błąd. Zrobiłem wiele testów. Z cytatami na jednej lub obu stronach w prostych testach, jeśli ustawię rme = README, to na przykład [$ rme == README] && echo "equal"; wyjście jest równe. Nie ma znaczenia, gdzie są spacje - z [oczywiście, ale także jeśli umieścisz spacje po jednej stronie == muszą być po drugiej. (Znam bash.) Redagowałem półksiężyce na wszelki wypadek, gdybym miał zbłąkane i to nie naprawiło ani nie zmieniło linii błędu. –
Zaktualizuj pytanie, podając kod, który powoduje nowe błędy. Dotknąłem pliku README w katalogu testowym, a twój kod zadziałał na mnie z moją poprzednią sugestią 'if [$ bn ==" README "]'. – fedorqui