Я использую Bash в Linux и нашел пример, в котором я сравнивал строки таким образом, но, похоже, он не работает.
В данном случае $a
это то, что пользователь вводит в консоль.
#!/bin/bash
a=$1
if [ "${a}"=="static" ]; then
(instrucciones)
else
(instrucciones)
fi
Вы можете сделать
help test
для получения дополнительной информации:Пустой строки:
равные строки
разные цепи
В Bash вы можете сравнивать строки, используя синтаксис:
Обратите внимание, что
$variable
здесь не нужно использовать двойные кавычки.Здесь, а также
[[
собственные==
фичи Bash (то, что мы называем Bashisms ). Стандарт (то есть то, что определяет POSIX) заключается в использовании[
and=
:В этом случае переменная должна быть заключена в кавычки, чтобы защитить нас от разбиения на слова .
Обратите внимание, что синтаксис имеет вид:
То есть пробелы вокруг
[
необходимы, так как[
это сама по себе команда. Эта команда вызывается,test
и поэтому вы можете использовать[
иtest
взаимозаменяемо, а также искать ее инструкции, выполняяman test
(как указано Trauma в своем ответе):Дополнительное пояснение относительно использования двойных кавычек внутри
[
и[[
.Когда мы используем
[
, переменные расширяются, вызывая ошибки, если мы не помещаем двойные кавычки:С
[
кавычками и расширение правильное:Если убрать кавычки, то выдает ошибку:
Ну, он расширяется до:
давая 5 аргументов
test
вместо максимальных 3 принятых.С другой стороны, с башизмом
[[
вы можете опустить кавычки:Примеры:
каждый указывает, что он делает, это легко понять.