2010-04-15 41 views
39

Tengo un script bash Linux 'myshell'. Quiero que lea dos fechas como parámetros, por ejemplo: myshell date1 date2. Soy un programador de Java, pero no sé cómo escribir un script para hacer esto.¿Cómo pasar parámetros a un script Linux Bash?

El resto de la secuencia de comandos es la siguiente:

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

Lo que llamas "shell" se llama "script" como una cuestión de hecho. Y, por favor, preste más atención al formateo de su publicación (marque las sugerencias a la derecha del campo de texto) y, por favor, comience oraciones con letras mayúsculas. –

+1

lo tengo ~~ gracias por recordar – chun

Respuesta

57

que utilizan $1, $2 en el script de ejemplo

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

funciona, gracias – chun

+6

@chun, también es posible que desee esperar un tiempo antes de aceptar una respuesta, incluso si funciona para usted. Tal vez otras personas podrían proponer una mejor respuesta, pero tal vez ni siquiera vean su pregunta porque algo ya ha sido aceptado. –

6

$ 0 $ 1 $ 2

Y así sucesivamente contendrá el nombre del script, luego el argumento de la primera y la segunda línea.

6

Los argumentos de Bash llevan el nombre de su posición.

Por otra parte, si usted necesita para manejar un argumento tras otro, se puede cambiar y utilizar siempre $1:

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

para iterar sobre los parámetros, se puede emplear sus abreviaturas:

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

Este formulario es el mismo que for a in "[email protected]".

Cuestiones relacionadas