2010-04-15 17 views
39

Ho uno script di bash Linux 'myshell'. Voglio che legga due date come parametri, ad esempio: myshell date1 date2. Sono un programmatore Java, ma non so come scrivere uno script per fare questo.Come passare parametri a uno script di Linux Bash?

Il resto dello script è come questo:

sed "s/$date1/$date2/g" wlacd_stat.xml >tmp.xml 
mv tmp.xml wlacd_stat.xml 
+1

Ciò che chiamate "shell" è in effetti chiamato "script". E, per favore, presta più attenzione alla formattazione del tuo post (controlla i suggerimenti a destra del campo di testo), e, per favore, inizia le frasi da lettere maiuscole. –

+1

ho capito ~~ grazie per il tuo promemoria – chun

risposta

57

si utilizza $1, $2 nello script ad esempio

date1="$1" 
date2="$2" 
sed "s/$date1/$date2/g" wlacd_stat.xml >temp.xml ;mv temp.xml wlacd_stat.xml #Semicolon can also replaced with a newline 
+0

funziona, grazie – chun

+6

@chun, potresti anche aspettare un po 'di tempo prima di accettare una risposta anche se funziona per te. Forse altre persone potrebbero proporre una risposta migliore, ma potrebbero anche non guardare la tua domanda perché qualcosa è già stato accettato. –

6

$ 0 $ 1 $ 2

E così via conterrà il nome dello script, quindi il primo e il secondo argomento di riga.

6

Gli argomenti Bash prendono il nome dalla loro posizione.

Inoltre, se hai bisogno di gestire un argomento dopo l'altro, è possibile spostarli e utilizzare sempre $1:

while [ $# -gt 0 ] 
do 
    echo $1 
    shift 
done 
8

per scorrere i parametri, è possibile utilizzare questa scorciatoia:

#!/bin/bash 
for a 
do 
    echo $a 
done 

Questo modulo è uguale a for a in "[email protected]".

Problemi correlati