Hasta donde sé, usar &después del comando es para ejecutarlo en segundo plano.
Ejemplo de &uso:tar -czf file.tar.gz dirname &
¿Pero qué tal &&? (mira este ejemplo: /server/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )
                    
                        bash
                                shell
                                command-line
                                syntax
                                
                    
                    
                        Capitán
fuente
                
                
            fuente

false && echo "Will not be printed".Concha, cuando veas
la intención es ejecutar el comando que sigue al
&&único si el primer comando es exitoso. Esto es idiomático de los proyectiles Posix, y no solo se encuentra en Bash.Tiene la intención de evitar la ejecución del segundo proceso si el primero falla.
Puede notar que he usado la palabra "intención", eso es por una buena razón. No todos los programas tienen el mismo comportamiento, por lo que para que esto funcione, debe comprender lo que el programa considera un "error" y cómo lo maneja leyendo la documentación y, si es necesario, el código fuente.
Su shell considera un valor de retorno de 0 para verdadero, otros números positivos para falso
Los programas devuelven una señal al salir. Deberían devolver 0 si salen con éxito, o mayor que cero si no lo hacen. Esto permite una cantidad limitada de comunicación entre procesos.
Se
&&hace referencia a esto comoAND_IFen la gramática de shell posix , que forma parte de unaand_orlista de comandos, que también incluye el||cual esOR_IFcon una semántica similar.Símbolos gramaticales, citados de la documentación:
Y la Gramática (también citada de la documentación), que muestra que cualquier número de
AND_IFs (&&) y / oOR_IFs (||) se pueden unir (comoand_orse define de forma recursiva):Ambos operadores tienen la misma precedencia y se evalúan de izquierda a derecha (se dejan asociativos). Como dicen los documentos:
En el primer caso, el falso es un comando que sale con el estado de
1lo que significa
echo fooque no se ejecuta (es decir, cortocircuitoecho foo). Entoncesecho barse ejecuta el comando .En el segundo caso, salidas verdaderas con un código de
0y por
echo foolo tanto no se ejecuta, luegoecho barse ejecuta.fuente
Un uso bastante común para '&&' es compilar software con autotools. Por ejemplo:
Básicamente, si la configuración tiene éxito, make se ejecuta para compilar, y si eso tiene éxito, make se ejecuta como root para instalar el programa. Lo uso cuando estoy casi seguro de que las cosas funcionarán, y me permite hacer otras cosas importantes como mirar stackoverflow y no 'monitorear' el progreso.
A veces me dejo llevar ...
Hago esto cuando, por ejemplo, hago un linux desde cero.
fuente
set -o errexitpara Bash.&&cadenas de comandos juntos. Los comandos sucesivos solo se ejecutan si los anteriores tienen éxito.Del mismo modo,
||permitirá que el comando sucesivo se ejecute si falla el precedente.Ver Programación de Bash Shell .
fuente
Mira el ejemplo:
Shell intentará crear un directorio
testy luego, solo si fue exitoso , intentará crear un archivo dentro de él.Por lo tanto, puede interrumpir una secuencia de pasos si uno de ellos falla.
fuente
Es ejecutar una segunda declaración si la primera termina exitosamente. Como una declaración if:
Sus primeros intentos si 1 == 1, si eso es cierto, comprueba si 2 == 2
fuente
&&iffuncionan las pruebas en bash. Nunca lo pensé como una cadena de comandos de comparación, rompiendo cuando alguno de ellos fallaba. Así que tienes mi||, para encadenar comandos hasta que uno de ellos tenga éxito:eei || leu || uie || echo prout3 || echo "never executed"command_1 && command_2: ejecuta command_2 solo cuando command_1 se ejecuta con éxito.command_1 || command_2: ejecuta command_2 solo cuando command_1 no se ejecuta correctamente.Se siente similar a cómo se ejecuta una condición 'si' en un lenguaje de programación convencional, como, en la
if (condition_1 && condition_2){...}condición_2 se omitirá si la condición_1 esfalsey en laif (condition_1 || condition_2){...}condición_2 se omitirá si la condición_1 estrue. Mira, es el mismo truco que usas para codificar :)fuente
Cuando el programa verifica si el comando, el programa crea un número llamado código de salida, si ambas condiciones son verdaderas, el código de salida es cero (0), de lo contrario, el código de salida es un número positivo. solo cuando se visualiza Equal si el código de salida se genera cero (0), eso significa que ambas condiciones son verdaderas.
fuente
if [[ ($first_command == "1") && ($two_command == "2") ]];then echo "Equal"; fi