Тест на точку в Баш - PullRequest
       14

Тест на точку в Баш

3 голосов
/ 30 апреля 2010

Как я могу проверить, является ли какая-то строка точкой в ​​bash? Я пробовал это:

if [ "$var" = "." ]

и это:

if [ "$var" = "\." ]

Но это не работает.

Ответы [ 3 ]

4 голосов
/ 30 апреля 2010

у меня работает:

$ d=.
$ if [ $d = '.' ];then echo 'yes'; else echo 'no'; fi
yes
$ d=foo
$ if [ $d = '.' ];then echo 'yes'; else echo 'no'; fi
no
1 голос
/ 30 апреля 2010

Мой код:

#!/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 в некоторых системах может указывать на. Лучше просто использовать = и вообще избежать этой проблемы.

0 голосов
/ 30 апреля 2010

Попробуйте удвоить равные (==), сравнение не то же самое, что присвоение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...