GNU/Linux >> Tutoriels Linux >  >> Linux

La substitution d'historique échoue lorsqu'elle est implémentée dans le script shell ?

Cette question a déjà une réponse ici  :L'extension de l'historique est-elle désactivée dans les scripts ?

(1 réponse)
Fermé il y a 1 an.

La commande ci-dessous fonctionne en ligne de commande

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

Sortie 09_03_2016

Mais quand je le fais dans un script shell, cela ne fonctionne pas

#! /bin/bash

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

Sortie !:3

Réponse acceptée :

Utilisez les directives suivantes dans votre script :

set -o history
set -o histexpand

Cela activera l'extension de l'historique qui n'est activée par défaut que pour les shells interactifs.

Voir man bash section HISTORY EXPANSION et SHELL BUILTIN COMMANDS commande set pour plus de détails.


Linux
  1. Déterminer Shell dans le script pendant l'exécution ?

  2. Expiration du délai dans un script shell ?

  3. Déterminer le chemin d'accès au script shell sourcé ?

  4. Que signifie `:-` dans un script shell ?

  5. Comment déclencher un événement dans le script Shell lorsqu'un périphérique USB est supprimé ?

Histoire mutilée ?

Processus dans une session dans un shell interactif Vs dans un script ?

La signification de $ ? Dans un script shell ?

Comment exécuter une commande dans un script shell ?

Script de translittération pour le shell Linux

Inviter l'utilisateur à se connecter en tant que root lors de l'exécution d'un script shell