Übergeben Sie den Parameter für ein Shell-Skript, aber warum gibt es zwei Werte?

313
richard20427176

Ich habe einige Probleme mit einem Shell-Skript. Bitte helfen Sie mir.

Ich erstelle eine Shell-Skriptdatei mit dem Namen 'deploy.sh'. Jedes Mal, wenn ich dieses Skript mit einem Parameter aufrufe, sieht es aus wie '20180208', '20180214' (JJJJMMdd-Datumsformat) ... etc.

# sh deploy.sh 20180208 

Der Inhalt für die Shell wie folgt (ich habe ein paar Zeilen für den Test geschrieben, aber ich habe die Probleme gefunden):

#! / bin / sh  # DEFINIEREN UPLOAD_DATE = $ 1 # AUSGABE SH_LOG = / home / jin.huang / logs / execsh.log  Bereitstellen () { Echo $ 1 echo $ UPLOAD_DATE } Stellen Sie >> $ SH_LOG bereit 

Also habe ich 20180208 an deploy.sh übergeben, aber ich habe zwei Ergebnisse für $ 1 erhalten:

Echo $ 1
Echo "$ 1"

diese werden auf dem Bildschirm leer angezeigt;

echo $ UPLOAD_DATE
echo "$ UPLOAD_DATE"

diese drucken '20180208' auf dem Bildschirm.

Warum gibt es zwei Ergebnisse?

1
Wenn ich es richtig verstanden habe, ist das Skript "$ 1" nicht die gleiche Funktion "$ 1". Sie können Parameter für Funktionen innerhalb des Skripts übergeben. `Deploy" $ 1 "` übergibt das Skript "$ 1" an die Funktion. Paulo vor 6 Jahren 0

0 Antworten auf die Frage