GNU/Linux >> Tutoriales Linux >  >> Linux

¿La sustitución del historial falla cuando se implementa en el script de Shell?

Esta pregunta ya tiene respuesta aquí :¿Está deshabilitada la expansión del historial en los scripts?

(1 respuesta)
Cerrado hace 1 año.

El siguiente comando funciona en la línea de comandos

rsync -avh -r /Source/09_03_2016/ /Destination/
echo $(basename !:3)

Salida 03_09_2016

Pero cuando hago esto en el script de shell, no funciona

#! /bin/bash

/usr/bin/rsync -avh -r /Source/09_03_2016 /Destination/;
echo $(basename !:3)

Salida!:3

Respuesta aceptada:

Use las siguientes directivas en su script:

set -o history
set -o histexpand

Esto habilitará la expansión del historial que solo está habilitada para shells interactivos de manera predeterminada.

Ver man bash sección HISTORY EXPANSION y SHELL BUILTIN COMMANDS comando set para más detalles.


Linux
  1. ¿Qué significa `:-` en un script de Shell?

  2. ¿Cómo activar un evento en el script de Shell cuando se quita un dispositivo USB?

  3. ¿Historia destrozada?

  4. ¿Cómo ejecutar un script en Shell cuando se presiona una tecla de acceso directo?

  5. Shell Script para imprimir pirámide de Estrellas

¿Cómo ejecutar un comando en un script de Shell?

¿Cómo ejecutar un script de shell cuando cambia un archivo o directorio?

Ejecutar script de shell en paralelo

Shell script directorio actual?

no se puede ejecutar un archivo binario cuando se intenta ejecutar un script de shell en Linux

Solicitar al usuario que inicie sesión como root cuando ejecute un script de shell