Desarrollo de linux integrado - (3) programación de shell

Directorio de artículos de la serie



prefacio

Shell es un programa escrito en lenguaje C, que es un puente para que los usuarios usen Linux. Shell es tanto un lenguaje de comandos como un lenguaje de programación.

Shell se refiere a un programa de aplicación que proporciona una interfaz a través de la cual los usuarios acceden a los servicios del kernel del sistema operativo.

El sh de Ken Thompson es el primer shell de Unix, y Windows Explorer es un típico shell de interfaz gráfica.


提示:以下是本篇文章正文内容,下面案例可供参考

1. Guión de shell

Shell script (script de shell) es un programa de script escrito para el shell.

El shell mencionado en la industria generalmente se refiere a scripts de shell, pero los lectores deben saber que shell y script de shell son dos conceptos diferentes.

Debido a razones habituales, en aras de la brevedad, la "programación de shell" en este artículo se refiere a la programación de scripts de shell, no al desarrollo del shell en sí.

2. Cómo ejecutar un script de shell

castaña

Abra un editor de texto (puede usar el comando vi/vim para crear un archivo), cree un nuevo archivo test.sh, la extensión es sh (sh significa shell), la extensión no afecta la ejecución del script, solo conozca el nombre, si usa php para escribir scripts de shell, simplemente use php como extensión.

Ingrese algún código, la primera línea suele ser así:

#!/bin/bash
echo "Hello World !"

método

1. Como programa ejecutable

Guarde el código anterior como test.sh y cd en el directorio correspondiente:

chmod +x ./test.sh #Habilitar la ejecución del script./test.sh
#Ejecutar el script
Tenga en cuenta que debe escribirse como ./test.sh en lugar de test.sh, lo mismo se aplica para ejecutar otros programas binarios , escriba directamente test .sh, el sistema Linux buscará test.sh en la RUTA, pero solo /bin, /sbin, /usr/bin, /usr/sbin, etc. están en la RUTA, y su directorio actual es por lo general, no está en la RUTA, por lo que si está escrito como test.sh, el comando no se encontrará. Use ./test.sh para indicarle al sistema que lo encuentre en el directorio actual.

2. Como parámetro de interpretación

Este modo de operación es ejecutar el intérprete directamente, y su parámetro es el nombre del archivo del script de shell, como por ejemplo:

/bin/sh test.sh
/bin/php test.php
La siguiente figura es una captura de pantalla de nuestra operación:
inserte la descripción de la imagen aquí

sintaxis del script de shell

1. Variables

gramática:

  • Los nombres solo pueden usar letras, números y guiones bajos en inglés, y el primer carácter no puede comenzar con un número.
  • No puede haber espacios en el medio, y se puede usar el guión bajo _.
  • No se puede utilizar puntuación.
  • Las palabras clave en bash no se pueden usar (use el comando de ayuda para ver las palabras clave reservadas).

Código de muestra:

#!/bin/bash
yourname="666"
echo "your name is $yourname"

Ejecución de resultados:
inserte la descripción de la imagen aquí
Nota : no necesita agregar "$" al definir, pero debe agregar "$" al citar

2. Entrada y salida

gramática :

El comando de salida echo
echo -e permite escapar, y los siguientes caracteres se pueden escapar

\a 发出警告声; 
\b 删除前一个字符; 
\c 最后不加上换行符号; 
\f 换行但光标仍旧停留在原来的位置; 
\n 换行且光标移至行首; 
\r 光标移至行首,但不换行; 
\t 插入tab; 
\v 与\f相同; 
\ 插入\字符; 
\nnn 插入nnn(八进制)所代表的ASCII字符;

echo -n sin salida de nueva línea

Ingrese el comando read
-p instrucción de solicitud, seguido de la información de solicitud de entrada, aquí está 'Ingresar contraseña:'
-n El número de parámetros, a veces para limitar la longitud de la contraseña u otras restricciones de longitud de entrada, como [Y/ N], solo ingrese la entrada Uno, -n1
-s protege el eco, no muestra el contenido de la entrada en la pantalla, generalmente se usa para ingresar la contraseña
-t tiempo de espera, aquí se establece en 30 segundos, sin entrada o entrada incompleta dentro 30 segundos, terminar
-d límite de entrada, aquí está , entrada a, entrada a, ingrese a , termine naturalmente la entrada
-r para proteger la función de traducción del carácter especial \, después de agregarlo, se tratará como un carácter ordinario

Código de muestra:

#!/bin/bash
read -p "pleadse input your name" yourname
echo "your name is $yourname"

Resultado en ejecución:
inserte la descripción de la imagen aquí
Nota: No agregue "$" delante de la variable de lectura

3. Shell pasando parámetros

Podemos pasar parámetros a la secuencia de comandos al ejecutar la secuencia de comandos de Shell, y el formato para obtener los parámetros en la secuencia de comandos es: $n. n representa un número, 1 es el primer parámetro para ejecutar el script, 2 es el segundo parámetro para ejecutar el script, y así sucesivamente... En el siguiente
ejemplo, pasamos tres parámetros al script y los emitimos respectivamente, donde $0 es el nombre del archivo ejecutado (incluida la ruta del archivo):

#!/bin/bash

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

Resultado corriente:
inserte la descripción de la imagen aquí
Manejo especial:
inserte la descripción de la imagen aquí

4. comando de prueba

El comando de prueba en Shell se usa para verificar si una determinada condición es verdadera y puede realizar pruebas en tres aspectos: valor numérico, carácter y archivo.

prueba numérica

inserte la descripción de la imagen aquí
Ejemplo:

#!/bin/bash
read -p "please input two int num:" first second
test $first == $second && echo "$first = $second" || echo "$first != $second"

resultado de la operación:
inserte la descripción de la imagen aquí

prueba de cuerda

inserte la descripción de la imagen aquí

prueba de archivo

inserte la descripción de la imagen aquí

5. Control de procesos de carcasa

si mas

Formato de gramática:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

formato de sintaxis if else-if else:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

La declaración de juicio […] de if else usa -gt para mayor que y -lt para menor que.

if [ "$a" -gt "$b" ]; then
    ...
fi

Si usa ((…)) como declaración de juicio, puede usar directamente > y < para mayor que y menor que.

if (( a > b )); then
    ...
fi

Ejemplo :

#!/bin/bash
read -p "please input two int num:" first second
if [ "$first" == "$second" ]
then
    echo "$first = $second"
elif (($first > $second))
then
    echo "$first > $second"
else
    echo "$first < $second"
fi

resultado de la operación:
inserte la descripción de la imagen aquí

en bucle

Al igual que otros lenguajes de programación, el shell admite bucles for.
El formato general de un bucle for es:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

Ejemplo:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

Resultado de salida:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

Ejemplo 2:
Ingrese un número entero y genere 1+2+. . . +n resultados

#!/bin/bash
read -p "please input int num:" num
count=0
for((i=0; i<=num; i=i+1))
do
    count=$(($count+$i))
done

echo "1+2+3+...$n = $count"

inserte la descripción de la imagen aquí

mientras declaración

Un bucle while se usa para ejecutar continuamente una secuencia de comandos y también se usa para leer datos de un archivo de entrada. Su formato de sintaxis es:

while condition
do
    command
done

hasta bucle

hasta que Loop ejecuta una secuencia de comandos hasta que se cumple una condición y se detiene.
El bucle till es exactamente lo contrario del bucle while.
En general, un ciclo while es mejor que un ciclo hasta, pero a veces, y solo en raras ocasiones, un ciclo hasta es más útil.
hasta el formato de sintaxis:

until condition
do
    command
done

caso… esac

case ... esac es una declaración de opción múltiple, que es similar a cambiar ... declaraciones de caso en otros idiomas. Es una estructura de selección de múltiples ramas. Cada rama de caso comienza con un paréntesis derecho y dos puntos y coma ;; indican break, que significa el final de la ejecución, saltar fuera de todo el caso... instrucción esac, y esac (es decir, el caso al revés) se usa como etiqueta final.
Puede usar una declaración de caso para hacer coincidir un valor y un patrón, y si la coincidencia es exitosa, ejecute el comando de coincidencia.
La sintaxis de case... esac es la siguiente:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

salir del bucle

comando break
El comando break permite salir de todos los bucles (finalizando la ejecución de todos los bucles subsiguientes).
En el siguiente ejemplo, la secuencia de comandos ingresa en un ciclo infinito hasta que el usuario ingresa un número mayor que 5. Para salir de este bucle y volver al indicador de shell, debe usar el comando break.
continuar
El comando continuar es similar al comando romper, excepto que no rompe todos los bucles, solo el bucle actual.

6. Función de concha

El shell de Linux puede definir funciones definidas por el usuario, y luego se pueden llamar casualmente en scripts de shell.
El formato de definición de una función en el shell es el siguiente:

[ function ] funname [()]
{
    
    
    action;
    [return int;]
}

ilustrar:

1. Puede definirse con la función fun(), o definirse directamente con fun() sin ningún parámetro.
2. El retorno de parámetro se puede mostrar y agregar: retorno de retorno, si no se agrega, el resultado del último comando se utilizará como valor de retorno. return seguido del valor n(0-255


Resumir

Este artículo hace un breve resumen de los comandos de shell. Si está interesado en la programación de shell, puede consultar: tutorial para principiantes: programación de shell

Supongo que te gusta

Origin blog.csdn.net/qq_52608074/article/details/127484559
Recomendado
Clasificación