Я прочитал эту страницу bash, но я не понимаю разницы. Я тестировал их оба, и они, похоже, дают точные результаты.
Я хочу установить значение по умолчанию для переменной, если значение не было задано с помощью параметра командной строки.
#!/bin/bash
var="$1"
var=${var:-word}
echo "$var"
В приведенном выше коде эхо-сигнал word
, если $1
имеет значение null и эхо-значение $1
, если не null. Так делает это:
#!/bin/bash
var="$1"
var=${var:=word}
echo "$var"
Согласно bash странице man,
${parameter:-word}
Используйте значения по умолчанию. Если параметр не задан или нулевым, заменяется слово. В противном случае значение параметра будет заменено.
${parameter:=word}
Назначить значения по умолчанию. Если параметр не задан или null, расширение слова присваивается параметру. Затем значение параметра заменяется. Таким образом, нельзя назначать позиционные параметры и специальные параметры.
Это то, что они одинаковые, а ${parameter:=word}
просто больше?