Я прочитал следующее в Руководстве пользователя к Z-Shell :
Синонимом «true» является «:»; это часто используется в этой форме, чтобы дать аргументы, которые имеют побочные эффекты, но которые не должны использоваться - что-то вроде
: ${param:=value}
которая является общей идиомой во всех производных оболочки Борна. В расширении параметра
$param
задается значение value, если оно ранее было пустым, а в противном случае оставлено в покое. Так как это была единственная причина расширения параметра, вы:
должны игнорировать аргумент. На самом деле, оболочка беспечно строит командную строку - двоеточие, за которым следует любое значение$param
, независимо от того, произошло присвоение или нет, - затем выполняет команду; просто так получается, что ':' не замечает аргументов, которые ему были даны.
но я этого не понимаю Я понимаю, что это :
означает true
, но в выражении есть два двоеточия. В качестве второстепенного вопроса, почему эта идиома так часто используется во всех производных оболочки Борна? Какой цели это служит?
Примечание: меня интересует, что делает эта идиома как в bash, так и в zsh .
Благодарность
zsh
илиbash
?