
Я пытаюсь понять уже написанный скрипт Shell и столкнулся со следующей строкой.
while [ -h "$SOURCE" ];
Мне нужно знать значение-час
Дополнительная информация:
$SOURCE = ./my-script.sh
решение1
Это -h
не опция ключевого while
слова, а утилиты [
(и test
). Значение опции описано в руководстве для test
, [
или вашей оболочки (так как это обычно встроенные утилиты), см man test
. .
Этостандартныйвариант для test
и [
, а также стандарт POSIXописывает этовот так:
-h pathname
True, если
pathname
разрешается в существующую запись каталога для символической ссылки. False, еслиpathname
не может быть разрешен, или еслиpathname
разрешается в существующую запись каталога для файла, который не является символической ссылкой. Если последний компонентpathname
является символической ссылкой, эта символическая ссылка не выполняется.
Короче говоря, это оценивается какистинныйесли заданный путь является символической ссылкой, то ваш while
цикл будет повторяться до тех пор, пока значение в переменной SOURCE
не перестанет ссылаться на символическую ссылку.