Мой код:
#!/bin/bash
var="."
[ $var = "." ] && echo "Yup, it equals '.'"
exit 0
Какие отпечатки:
Yup, it equals '.'
Отлаживал:
tpost@tpost-desktop:~$ /bin/bash -x ./foo.sh
+ var=.
+ '[' . = . ']'
+ echo 'Yup, it equals '\''.'\'''
Yup, it equals '.'
+ exit 0
Возможно, у вас есть пробел в $var
(или, возможно, $var
пуст?), Пропустите его через /bin/sh -x ./yourscript.sh
, чтобы увидеть, что он на самом деле сравнивает.
Имейте в виду, == - это bashism , он работает только в Bash. Это удобство для людей, привыкших к одному = , что приводит к заданию . Это нормально, если вы используете только bash, но никогда не знаете, что / bin / sh в некоторых системах может указывать на. Лучше просто использовать = и вообще избежать этой проблемы.