Я знаю, что могу проверить пустую строку в Bash с помощью -z следующим образом:
if [[ -z $myvar ]]; then do_stuff; fi
но я вижу много кода, написанного как:
if [[ X"" = X"$myvar" ]]; then do_stuff; fi
Является ли этот метод более переносимым? Является ли это просто историческим крушением до дней -z? Это для оболочек POSIX (хотя я видел, что он использовался в таргетинге на сценарии bash)? Готов к моему уроку истории/переносимости.
Тот же вопрос задавался на сервере Fault как Как определить, является ли переменная Bash пустой?, но никто не предложил объяснения, почему вы видите код с материалом X"".