[ $hidden ]
эквивалентно [ -n $hidden ]
и проверяет, расширяется ли $hidden
до непустой строки;0
и 1
являются непустыми строками и имеют значение true, поэтому ! [ $hidden ]
равно false.
Примечание: если $hidden
на самом деле пустая строка, вы получите синтаксисошибка;чтобы предотвратить это, напишите так:
if ! [ "$hidden" ]; then
Чтобы сделать то, что я думаю, вы хотите, вы должны использовать другую условную конструкцию :
if ! (( hidden )); then
Thisоценивает hidden
в арифметическом контексте ;значение 0
считается ложным, а ненулевое - истиной.В арифметическом контексте вы можете пропустить $
, следовательно, hidden
вместо $hidden
.Цитирование тоже не требуется.Обратите внимание, что (( ))
является расширением Bash;если вы хотите то же самое в POSIX sh, вы должны использовать
if ! [ "$hidden" = 1 ]; then