Ho letto la pagina man di bash su questo, ma non capisco la differenza. Ho provato entrambi fuori e sembrano produrre esattamente gli stessi risultati.
Desidero impostare un valore predefinito di una variabile se il valore non è stato impostato tramite un parametro della riga di comando.
#!/bin/bash
var="$1"
var=${var:-word}
echo "$var"
Il codice sopra echi word
se $1
è nullo ed echi valore $1
se non nullo. Così fa questo:
#!/bin/bash
var="$1"
var=${var:=word}
echo "$var"
Secondo la pagina man di Bash,
${parameter:-word}
utilizzare i valori predefiniti. Se il parametro non è impostato o è nullo, l'espansione della parola viene sostituita. Altrimenti, il valore del parametro viene sostituito.
${parameter:=word}
Assegna valori predefiniti. Se il parametro non è impostato o è nullo, l'espansione della parola viene assegnata al parametro. Il valore del parametro viene quindi sostituito. I parametri posizionali e i parametri speciali non possono essere assegnati in questo modo.
È che sono uguali e lo ${parameter:=word}
fa solo di più?
Bello e conciso. – JAB
Fantastica spiegazione, mi piace anche che sia breve e concisa. Ho dato la risposta accettata a Guilaume per la spiegazione extra e per avere la prima risposta. Grazie! –
per buona misura, ho anche svalutato questa risposta;) – Guillaume