Что означает, если [«x / usr / bin»! = «X»] в сценарии bash? [дубликат]

Я пытаюсь понять некоторую последовательность сценариев bash, и на одном из шагов есть условие:

if [ "x/usr/bin" != "x" ]; then <do some actions>

Что означает следующее?

  • x в x / usr / bin
  • x в правой части уравнения тестирования?
1
задан 21 April 2021 в 10:28

1 ответ

Это всем известный башизм.

Если переменная (скажем, $ foo в этом примере) может быть пустой или может содержать значение,

Если foo = "" , то

 if [ "$foo" = "bar" ]

заменяется на

if [ = "bar" ]

синтаксическая ошибка: - (

Если используется

if [ "x$foo" = "xbar" ] 

, он заменяется на

if [ "x" = "xbar" ]

Синтаксическая ошибка отсутствует.

Есть более эффективные способы проверки пустых переменных, например

if [[ -n "$foo" ]]
1
ответ дан 23 April 2021 в 23:20

Другие вопросы по тегам:

Похожие вопросы: