Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - Linux toma prestado el comando externo expr para implementar la función de calculadora, utilizando canalizaciones y procesos.

Linux toma prestado el comando externo expr para implementar la función de calculadora, utilizando canalizaciones y procesos.

Descripción de la prueba (pregunte al especificador)

Función: Verifique el tipo de archivo y el valor de comparación.

Varios parámetros y uso del test.

Prueba expresión1–aexpresión2

El valor es verdadero cuando tanto la expresión1 como la expresión2 son verdaderas.

Pruebe expresión1–oexpresión2

Este valor es verdadero cuando expresión1 o expresión2 es verdadera.

Prueba –n cadena

o

Cadena de prueba

Verdadero cuando la longitud de la cadena STRING no es cero.

Prueba –z cadena

Este valor es verdadero cuando la longitud de la cadena es cero.

Cadena de prueba 1 = cadena 2

Verdadero cuando los valores de tiempo de STRING1 y STRING2 son los mismos.

¡Prueba la cadena 1! = STRING2

Cuando los diferentes valores de STRING1 y STRING2 son verdaderos.

Prueba del entero 1–eq del entero 2

Este valor es verdadero cuando el entero 1 es igual al entero 2.

Prueba Entero 1 – GE Entero 2

Verdadero cuando INTEGER1 es mayor o igual que INTEGER2.

Prueba entero 1–gt entero 2

Verdadero cuando el entero 1 es mayor que el entero 2.

Prueba entero 1 – entero 2

Verdadero cuando INTEGER1 es menor o igual que INTEGER2.

Prueba entero 1–lt entero 2

Verdadero cuando el entero 1 es menor que el entero 2.

Prueba entero 1–ne entero 2

Verdadero cuando INTEGER1 no es igual a INTEGER2.

Archivo de prueba 1–archivo ef 2

Verdadero cuando el archivo 1 y el archivo 2 tienen el mismo número de dispositivo y número de inodo (para obtener más detalles, consulte las notas de estudio de archivos de Linux).

Archivo de prueba 1–archivo nt 2

Verdadero cuando el tiempo de modificación del archivo 1 es mayor que el nuevo valor del archivo 2.

Probar archivo 1–o archivo 2

Verdadero cuando la hora de modificación del archivo 1 es anterior al valor anterior del archivo 2.

Archivo de prueba-b

El archivo existe y el contenido es de tipo bloque.

Prueba –c archivo

El archivo existe y es de tipo carácter.

Archivo Test-d

El archivo existe y es un directorio.

Prueba –e archivo

¿Existe el archivo?

Prueba –f archivo

El archivo existe y es un documento de tipo expresión regular.

Archivo de prueba –g

El archivo existe y tiene set-group-ID, que es SGID (para obtener más detalles, consulte las siguientes notas de estudio).

Test-G-File

El archivo existe y es propiedad de una identificación de grupo válida (consulte las notas de estudio a continuación para obtener más detalles).

Archivo de prueba –h

El archivo existe y es un enlace simbólico (consulte las notas de estudio a continuación para obtener más detalles).

Archivo Test-k

El archivo existe y el bit adhesivo está configurado (consulte las siguientes notas de estudio para obtener más detalles).

Prueba –Archivo L

El archivo existe y es un enlace simbólico.

Archivo Test-O

El archivo existe y es propiedad de una identificación de usuario válida.

Prueba –p archivo

El archivo existe y es una canalización con nombre (consulte las siguientes notas de estudio).

Archivo Test-r

El archivo existe y se le ha otorgado permiso de lectura.

Archivo de prueba

El archivo existe y su tamaño es mayor que 0.

Archivo de prueba

El archivo existe y es un socket.

Prueba – Diagnóstico de fallas de prueba

Abra el descriptor de archivo FD en la terminal.

Archivo Test-u

El archivo existe y se ha configurado el SUID.

Prueba –w archivo

El archivo existe y se le ha otorgado permiso de escritura.

Prueba –x archivo

El archivo existe y se le han otorgado permisos ejecutables.

-

expr

Expr es un contador de línea de comando manual en Linux que puede ayudarnos a completar algunas operaciones básicas de valores de expresión. También es una herramienta de procesamiento de cadenas.

(1) Operaciones con números enteros

$expr ARG1 |p>

$ expr arg 1 & ;ARG2

$ expr arg 1 <= ARG2

$expr ARG1 = ARG2

$expr ARG1! = ARG2

$ expr arg 1 & gt; = ARG2

$ expr arg 1 & gt2

$expr ARG1 + ARG2

$ expr arg 1–arg 2

$expr ARG1 * ARG2

Cuando usas la multiplicación, necesitas usar barras invertidas para escapar.

$expr ARG1 % ARG2

(2) Operación de cadena

$ expr length " XXX "// Calcula la longitud de la cadena.

$ expr substr "Esta es una" longitud pos//Trunca la subcadena de longitud del bit pos.

$ expr index "tesr" e//Obtiene la posición de la primera aparición de e en la cadena principal.

(3) Conteo incremental

Ejemplo

Loop=3

loop = ' expr $ loop+1 '

echo $loop

El resultado es 4. En la segunda línea de código, se utilizan comillas invertidas y el shell tratará el contenido de las comillas invertidas como comandos del sistema. De esta manera, al igual que ingresamos expr $loop+1 en la línea de comando, el resultado de retorno de este comando se asigna a este bucle.

(4) Coincidencia de patrones (coincidencia de cadenas según patrones de expresión regular)

Cuente el número de caracteres en la cadena especificando la opción de dos puntos. . * significa cualquier carácter repetido 0 o más veces.

& gtVALUE=cuenta.doc

& gtexpression$valor:'. *'

Puedes usar operaciones de coincidencia de cadenas en expr, donde usas patrones para extraer. archivo de documento.

$ expr $ VALOR: "\(.*\).Doctor

Cuentas

(5)Otros

+token de pedido

Interpretar TOKEN como una cadena, ya sea una palabra clave o un operador.

Conocimientos ampliados:

El papel de las comillas

1Comillas dobles ("")

1) Utilice " " para citar cualquier carácter o cadena, excepto $ (signo de dólar), ` (comilla invertida) y \ (barra invertida). Las comillas no impiden que el shell. realizando un procesamiento especial en estos tres caracteres (que indica nombres de variables, sustituciones de comandos y barra invertida)

eg:name = gezn; Echo "Username:$ name "/ / Imprimirá el nombre de usuario: gezn

Echo "La fecha es: ` fecha+fecha-% d-% m-% y ` "//La fecha es: 03-05-2009 se imprimirá /p>

imprimirá echo-. e " $ usuario \ t $ uid "//gezn 500.

2) Si desea buscar nuevas cadenas que contengan espacios, utilice siempre comillas dobles

p>2 comillas simples ("")

1) Si la cadena está entre comillas simples, se bloqueará el significado especial de cualquier carácter especial en la cadena en dayi9nhao

2) Por ejemplo: se imprimirá echo –e '$USER\t$UID'/$USER$UID (no se bloqueará debido a la opción "-e")

echo ' USER \ t $ UID ' //imprimirá $USER\t$UID.

3 comillas invertidas (``)

1) shell shell imprimirá el contenido como un comando del sistema y ejecutará su contenido.

2) Por ejemplo: a=`fecha+fecha-%d-%m-%Y` //Se imprimirá la fecha para: 03-05-2009. p>4. Barra invertida (\)

1) Si el siguiente carácter tiene un significado especial, la barra invertida evita que el shell malinterprete su significado, es decir, protege sus significados especiales. 2) Los caracteres subordinados contienen significados especiales: * + $ ` " |?

3) Cuando desee agregar caracteres octales (caracteres correspondientes ASCII) al imprimir una cadena, debe agregar una barra invertida delante; de ​​lo contrario, el shell lo usará como un número normal.

Ejemplo: bj = Beijing; echo " variable \ $ bj = $ bj "//Imprimirá la variable $bj = beijing.

-

Variables especiales de Shell

En Shell, varias variables de Shell con significados especiales están predefinidas y sus valores solo pueden ser determinados por Shell. según el valor real El valor se asigna según la situación y el usuario no puede restablecerlo. Las variables especiales del shell incluyen su ubicación y algunas variables del sistema.

(1) Variables posicionales comunes:

El número de parámetros reales en la línea de comando, pero sin incluir el nombre del script de shell.

$?El valor de retorno (también llamado "código de salida") después de ejecutar el último comando. Este es un número decimal. Cuando la mayoría de los comandos de Shell se ejecutan correctamente, el valor de retorno es 0; si la ejecución falla, se devolverá un valor distinto de cero.

El ID del proceso actual.

$!El número de proceso correspondiente al último comando en segundo plano es una cadena numérica que consta de 1 a 5 dígitos.

$-Una cadena que consta del nombre del indicador de ejecución establecido por el shell actual. Por ejemplo:

La línea de comando set -xv establece los indicadores -x y -v para el Shell (para salida de seguimiento).

$ * representa todas las cadenas de parámetros realmente proporcionadas en la línea de comando, sin limitarse a 9 parámetros.

$@Su función básica es la misma que $*, excepto que se usa entre comillas y cada parámetro se devuelve entre comillas.

$0 nombre del script

$1...$9 enésimo parámetro

El aaa bbb a continuación es el nombre de la variable.

${aaa:-bbb}Si $aaa está vacío o no está definido, el valor es $bbb. De lo contrario, el valor es $aaa.

${aaa:+bbb}Si $aaa no está vacío, el valor es $bbb; de lo contrario, está vacío.

${aaa:=bbb}Si $aaa no está vacío, toma el valor de $aaa, de lo contrario toma el valor de $bbb y asigna (aaa=bbb).

${aaa:3} Si aaa=abcdefg, el valor de ${aaa:3} es: defg, que equivale a substr, y el conteo comienza desde 0.

${aaa:3:2} es el mismo que el anterior; el valor de ${ AAA:3:2 } es: de, que equivale a substr.

${#aaa}La longitud de la cadena $aaa.

(2) Variables comunes del sistema:

$HOME directorio de inicio del usuario

$USER nombre de usuario

$ TERM el usuario pertenece a $ Nombre del grupo

$PATH ruta de búsqueda predeterminada

$HOSTNAME nombre de host

$ TERM tz zona horaria

Almacenar $MAIL Nombre de ruta de $ TERM

Ejercicio de mano:

#!/bin/bash

Echo $0

Echo $*

echo $@

echo $#

echo $$

echo $_

Ejecutar en una ventana de terminal :

. /test .sh-a-b–c/home

. /test.sh

-a -b -c /home

-a -b -c /home

cuatro

3250

/Homepage

Distingue entre $ * y $ @ y escribe el siguiente script test.sh:

#!/bin/bash

Etiqueta de prueba de función

{

echo " $# args "

}

testargs "$* "

Indicador de prueba "$@"

Indicador de prueba no establecido

Ejecutar en la ventana de terminal:

. /test.sh -a -b /home

1 args //Obviamente solo hay uno, se pasa la cadena $*, no los parámetros interpretados.

3 argumentos //$@ deben coincidir con las comillas para que el resultado sea correcto.

#!/bin/bash

Indicador de prueba funcional

{

Eco " $# args "

}

testargs $*

testargs $@

Marca de prueba no establecida

De manera similar, también:

. /test.sh -a -b /home

3 parámetros

3 parámetros

Autor: Aga.

J

Fuente: blogs.com/aga-j.

上篇: ¿Qué significa dormir en el suelo? 下篇: Letra de Super Junior "U of U"
Artículos populares