mio problema:passaggio vuoto variabile in bash
#!/bin/bash
function testFunc(){
echo "param #1 is :" $1
echo "param #2 is :" $2
}
param1="param1"
param2="param2"
testFunc $param1 $param2
questo modo l'uscita è:
param #1 is : param1
param #2 is : param2
Ma quando ho impostato param1 a stringa vuota:
param1=""
L'uscita è il maggese:
param #1 is : param2
param #2 is :
Suppongo che il problema è che quando il primo parametro è vuoto, non è dichiarato, quindi in realtà non viene passato come parametro di funzione.
Se questo è il problema, c'è un modo per dichiarare una variabile "stringa vuota" in bash, o c'è qualche soluzione per ottenere il comportamento previsto?
Nota: Funziona come previsto se chiamo la funzione in questo modo:
testFunct "" $param2
Ma voglio mantenere il codice pulito.
UPDATE:
di recente ho scoperto la bandiera -u che solleva un errore nel caso in cui una variabile non legata è in procinto di essere utilizzato.
$ bash -u test.sh
param #1 is : param1
test.sh: line 5: $2: unbound variable
Pulizia non deve ignorare la correttezza. – chepner
Quindi preferisci mantenere il disordine corretto, invece di cercare una soluzione pulita e corretta? – kupsef
Se il codice non è corretto, a chi importa se è pulito? Non citando un'espansione parametro perché ritieni che sia più pulito non è corretto. – chepner