$ bash <ex1
puede leer en
ex1programar y ejecutar
Su forma general es:
$ nombre del script bash [parámetro]
Por ejemplo:
$ bash ex2 /usr/meng /usr/zhang
El proceso de ejecución es el mismo que el método anterior, pero la ventaja de este método es que puede tener parámetros después del nombre del script, pasando así los valores de los parámetros a los comandos en el programa, de modo que un script de Shell pueda Maneja múltiples situaciones, al igual que una función. Al llamar, los parámetros reales correspondientes se pueden pasar de acuerdo con el problema específico.
Si comienza con el shell actual (comenzando con
·significa) para ejecutar un script de Shell, puede utilizar la siguiente forma sencilla:
$ · ex3 [parámetro]
Establezca los permisos del script de shell en ejecutable y luego ejecútelo directamente cuando se le solicite.
Métodos específicos:
$ chmod a+x ex4$ ./ex4
Este requisito especifica el Shell específico que ejecuta el script al principio del script de Shell, por ejemplo
/bin/bash:
#!/bin/bash
El Shell recibe el comando (nombre del script) ingresado por el usuario y lo analiza. Si el archivo está marcado como ejecutable pero no es un programa compilado, el shell lo considera un script de shell. El shell leerá los contenidos, los interpretará y los ejecutará. Entonces, desde la perspectiva del usuario, ejecutar un script de shell es similar a ejecutar un archivo ejecutable normal.
Por lo tanto, los scripts de shell desarrollados por el usuario pueden residir en un directorio en la ruta de búsqueda de comandos (generalmente
/papelera,
/usr/binetc.), utilícelo como un comando normal. De esta manera, usted desarrolla sus propios comandos nuevos. Este método es más conveniente si planea utilizar repetidamente el script de shell preparado.
Puede asignar el resultado de la ejecución de un comando a una variable. Hay dos formas de sustitución de comandos: una es utilizar comillas invertidas para citar el comando, su forma general es:
lista de comandos.
Por ejemplo: almacene el nombre de ruta completo del directorio de trabajo actual en el directorio variable e ingrese la siguiente línea de comando:
$ dir=`contraseña`
Otra forma es:
$(lista de comandos). La línea de comando anterior también se puede reescribir como:
$dir=$(contraseña)
IntentoSolo se proporcionan matrices unidimensionales y el tamaño de la matriz no está limitado. Al igual que en el lenguaje C, los subíndices de los elementos de la matriz se numeran a partir de 0. Para obtener elementos en una matriz, utilice subíndices. El subíndice puede ser un número entero o una expresión aritmética y su valor debe ser mayor o igual a 0. Los usuarios pueden utilizar declaraciones de asignación para asignar valores a variables de matriz.
La forma general de asignar valores a los elementos de una matriz es:
Nombre de la matriz [subíndice] = valor,Por ejemplo:
$ ciudad[0]=Pekín$ ciudad[1]=Shanghai$ ciudad[2]=Tianjin
También se puede utilizar
declararEl comando declara explícitamente una matriz, la forma general es:
$ declarar -un nombre de matriz
El formato general para leer valores de elementos de matriz es:
${nombre de matriz[subíndice]},Por ejemplo:
$ echo ${ciudad[0]}Pekín
Cada elemento de una matriz se puede asignar elemento por elemento utilizando el método anterior, o se puede asignar en combinación. La forma general de definir una matriz y asignarle un valor inicial es:
Nombre de la matriz = (valor 1 valor 2 ... valor n)
Cada valor está separado por espacios. Por ejemplo:
$ A=(este es un ejemplo de script de shell)$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}este es un script de ejemplo$ echo ${ Un[8]}
Dado que hay 7 valores iniciales en la tabla de valores, entonces
AEl número de elementos también es 7.
Un[8]Excede la matriz asignada
Arango, se considera un elemento nuevo Dado que no hay ningún valor asignado de antemano, su valor es una cadena vacía.
Si no se proporciona el subíndice del elemento de la matriz, el nombre de la matriz representa el elemento de la matriz con el subíndice 0, como por ejemplo
ciudades equivalente a
ciudad[0].
usar
*o
@Cuando se subíndice, se reemplazarán todos los elementos de la matriz.
$ echo ${A[*]}este es un ejemplo de script de shell
$ eco ${#A[*]}7
Si desea escribir un Shell para encontrar la suma de dos números, ¿cómo puede implementarlo? Para introducir el uso del paso de parámetros, escriba un script como este:
$ gato > suma addlet=$1+$2echo $suma
Después de guardar, ejecute:
$ chmod a+x ./agregar$ ./agregar 5 1015
Se puede ver que 5 y 10 se pasan a
$1y
$2Este es el orden de parámetros preestablecidos del shell. De hecho, también puede definir las variables primero y luego pasarlas.
Por ejemplo, modifique el script anterior para obtener:
let suma=$X+$Yecho $suma
Ejecutar nuevamente:
$ X=5 Y=10 ./sumar15
Se puede encontrar que también se pueden obtener los resultados correctos.
exportar una variable de entorno:
$ exportar opid=Verdadero
Eso es todo, si desea que surta efecto después de iniciar sesión, puede agregarlo directamente a.
/etc/perfilo
~/.bashrcAdentro.
puede pasar
leerPara leer un valor de variable, por ejemplo, esperar a que el usuario ingrese un valor y lo muestre:
$ read -p Ingrese un valor: input ; ingresó un valor: $input Ingrese un valor: 21500 Ingresó un valor: 21500
Algunas variables importantes de Shell no deben modificarse después de la asignación, por lo que puede configurarlas para
sólo lectura:
$ oracle_home=/usr/oracle7/bin$ oracle_home de solo lectura
gramática:
expresión de pruebaDevuelve verdadero si la expresión es verdadera; en caso contrario, devuelve falso.
Primero, se dan los símbolos de comparación comunes utilizados en comparaciones numéricas:
-eg =; -ne !=; -gt >; -ge >=; -le <=
$ prueba var1 -gt var2
Si el archivo se puede leer, escribir y ejecutar depende de si es un archivo normal y si es un directorio:
-r; -w;-x;-f;
$ prueba -r nombre de archivo
La longitud de la cuerda es cero:
-z; distinto de cero:-norte,como:
$ prueba -z s1
si cadena
s1La longitud es cero y devuelve verdadero.
igual
s1=s2; no iguals1!=s2
Hay otra forma de comparar cadenas (puedes compararlas en orden lexicográfico):
$ if [[ 'abcde' < 'abcdf' ]]; entonces echo sí, como se esperaba, sí, como se esperaba, sí;
Las operaciones que se pueden realizar con este comando son:
Operaciones aritméticas:
+ - * / %;Operación lógica:= ! < <= > >=
como:
$ i=5;expr $i+5
además,
antes de Cristoes una calculadora de línea de comandos que puede realizar algunos cálculos aritméticos.
siEjemplo de comando: si el primer parámetro es un nombre de archivo común, imprima el archivo en páginas; de lo contrario, si es un nombre de directorio, ingrese el directorio e imprima todos los archivos en el directorio; información relevante.
si prueba -f $1entonces pr $1>/dev/lp0elif prueba-d $1entonces (cd $1;pr *>/dev/lp0)de lo contrario echo $1 no es ni un archivo ni un directoriofi
casoEl comando es un comando de rama multidireccional basado en la coincidencia de patrones. Lo siguiente determinará qué conjunto de comandos se ejecutará a continuación en función de la entrada del teclado del usuario.
while [ $reply!=y ] && [ $reply!=Y ] #La declaración de bucle que aprenderemos a continuación hace echo n¿Quieres continuar?(Y/N)c leer respuesta #Leer la funda del teclado $replay en ( y|Y) break;; #Salir del bucle (n|N) echo nnTerminandon exit 0;; echo nnPor favor responda y o n continuar #Regrese directamente al bucle interno y comience; continuar con esacdone
gramática:
mientras/hasta lista de comandos 1do lista de comandos 2hecho
La diferencia es que después de que el primero ejecuta la tabla de comandos 1, si el estado de salida es cero, entonces ejecuta
hacerLa siguiente lista de comandos 2 volverá al punto de partida y, después de que esta última ejecute la lista de comandos 1, solo realizará operaciones similares si el estado de salida no es cero. Mismo ejemplo que el anterior.
gramática:
para el nombre de la variable en la tabla de cadenas, haga la tabla de comandos lista
Ejemplo:
ARCHIVO=test1.c myfile1.f pccn.hfor i en $FILEdo cd ./tmp cp $i $i.old echo $idone copiado
Ahora echemos un vistazo al uso de funciones en Shell. Veamos primero un ejemplo: escriba una función y luego llámela para mostrarla.
¡Hola Mundo!
$ cat > show# Función de definición de función show{ echo $1$2;}H=Hello,W=World!# Llame a la función y pase dos parámetros H y Wshow $H $W
Manifestación:
$ chmod 770 show$./show¡Hola mundo!
¿Viste algo sospechoso?
$ mostrar $H $W
Podemos seguir directamente el nombre de la función con los parámetros reales.
El orden de los parámetros reales corresponde a los "parámetros virtuales"
$1,$2,$3…
Nota: Si desea pasar un parámetro, ¿qué debe hacer si hay espacios en medio del parámetro? Pruébalo primero.
para mostrar
Hola Mundo(Hay un espacio entre las dos palabras)
función show{ echo $1}HW=Hola mundoshow $HW
si directamente
mostrar $HW, definitivamente no es posible, porque
$1Sólo recibido
Hola, por lo que los resultados sólo muestran
Hola, la razón es que se deben usar variables de cadena Contenerlo.
Si estás interesado, ¡sigue aprendiendo!
Hay muchas cosas poderosas esperándote, como
cortar,
exprés,
sed,
awketc.