Por favor, dígame cómo utilizar múltiples variables en la declaración for in del shell
1. Recorre cadenas separadas por espacios:
#!/bin/bash
servers="abc123 das 222"
para server in$servers
do
echo$server
done
2 Recorre la lista de cadenas, separadas por espacios:
#!/bin/bash
para servidor en a b c
do
echo$server
done p>
3. Recorra la lista de parámetros:
#!/bin/bash
for arg en $*
do
<. p>echo$arghecho
4. Recorra el directorio de archivos:
#!/bin/bash
for i in ~/*.sh
do
echo$i
cat$i
hecho
Nota: $i es el directorio y el archivo completos. La declaración for in también se puede usar con ` ` y $(), por ejemplo:
#!/bin/bash
for i. en $( ls~/*.sh)
do
echo$i
cat$i
hecho
Información ampliada:
Resumen del uso del shell de Linux (para in)
1. Sintaxis
¿para el nombre de la variable? segmento (comando)? hecho
Nota 1: ¡Es el nombre de la variable, no la variable $!
Nota 2: ¡Las listas pueden causar escándalo!
2. Aplicación
La primera categoría: bucle digital-->aplicación de secuencia detrás en
#!/bin/bash # ¿también se produce aritmética? secuencia -->El valor predeterminado es 1
para i en $(seq 1 10)?
#¡El resultado es una cadena y el IFS predeterminado está separado por espacios! do
? echo $(expr $i \* 3 + 1); #Revisión principal: ¡el uso especial de la multiplicación expr! -->¿Separado hecho con espacios?
Suplemento: Los números naturales generados -->Aplicación de {} después en
total=0?
#Global Variable para i en {1..100} #".." significa continua y el valor predeterminado es IFS separado por espacios do
((total+=i))? doneecho -e "total is:$ { total}"?
#Comentarios de varias líneas
< #Múltiples files do echo $i samtools view -c $i doneCOMMENT La segunda categoría: bucle de caracteres La más original #!/bin/bash #Use el bucle list for para mostrar el inglés correspondiente de lunes a domingo-->inglés de la fecha de aprendizaje para día en lunes martes miércoles jueves viernes sábado domingo? echo "$day" done Tipo de variable #!/bin/bash list? = "Linux Java C++ Python" para i en $list do ? echo -e "El idioma es ${i}" ¿listo? cat La aplicación detrás de in-->lee el contenido del archivo línea por línea (el valor predeterminado es IFS), por lo que no se imprime línea por línea. #!/bin/bashfor? in $(cat log color.sh)? #Nota: los archivos pwd en el directorio actual hacen eco de $ Ya hice La tercera categoría: búsqueda de ruta El comando después de ls in es --> leer el archivo bajo la contraseña actual (en un sentido amplio). #!/bin/bash para i en `ls`;? #ls se puede usar en combinación con comodines ? echo $i es el nombre del archivo\! Nota:\¿Aplicación terminada? ¿Usar comodines para leer directorios (sin comando) para el archivo en ~/* #Contenido en el directorio de primer nivel -->No mostrar de forma recursiva? ? echo $file es la ruta del archivo \! #${file} representa la ruta completa del archivo realizado Pasar parámetros a través del script #!/bin/bash #Memoria 1: ¡Cuente el número de parámetros del script echo "el número de argumento es $#"! #Memoria 2: Contenido del parámetro-->¡Esto se puede reemplazar con $@ para realizar pruebas! echo "la entrada es $*" Ejecución #Loop para el argumento en "$*"; ¿hacer? echo? "$argumento "? hecho