Я пытаюсь создать командную строку, основанную на передаче флага «-e» и другой переменной в другой базовый сценарий, вызываемый как подпрограмма, и запустил в странную проблему; Я теряю часть строки «-e», когда передаю ее в подпрограмму. Я создаю пару примеров, которые иллюстрируют проблему, может помочь?
Это работает, как и следовало ожидать:
$echo "-e $HOSTNAME"
-e ops-wfm
Это НЕ; мы теряем «-e», потому что он интерпретируется как специальный квалификатор.
$myFlag="-e $HOSTNAME"; echo $myFlag
ops-wfm
Добавление символа экранирования «\» тоже не работает, я получаю правильную строку с символом «\» впереди:
$myFlag="\-e $HOSTNAME"; echo $myFlag
\-e ops-wfm
Как я могу предотвратить проглатывание -e
?