Команда time вызовет эхо команды. В zsh это встроено в оболочку, поэтому внешний двоичный файл не запускается. В bash команда echo запустит бинарный файл echo, расположенный в /bin/echo.
Таким образом, в zsh встроено эхо, bash создаст процесс из двоичного файла эха.
Когда вы вставляете значение new value is ${abc}
, часть ${abc}
представляет собой просто строку символов. Эта строка не переоценивается для раскрытия, когда вы выполняете xyz=$@
.
Чтобы расширить ${abc}
в строке, выполните следующие действия в скрипте:
abc="something='123:234'"
eval "xyz=\"$1\""
printf '%s\n' "$xyz"
eval
принимает фрагмент шелл-кода. Данный код выполняет xyz="$1"
, но с заменой $1
аргументом командной строки (на строкуnew value is ${abc}
). Этот оператор затем переоценивается оболочкой, присваивая корректную строку переменной.