GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verlaufsersetzung schlägt fehl, wenn sie im Shell-Skript implementiert wird?

Auf diese Frage gibt es hier bereits eine Antwort :Ist die Verlaufserweiterung in Skripten deaktiviert?

(1 Antwort)
Vor 1 Jahr geschlossen.

Der folgende Befehl funktioniert in der Befehlszeile

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

Ausgabe 03.09.2016

Aber wenn ich das im Shell-Skript mache, funktioniert es nicht

#! /bin/bash

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

Ausgabe !:3

Akzeptierte Antwort:

Verwenden Sie die folgenden Anweisungen in Ihrem Skript:

set -o history
set -o histexpand

Dadurch wird die Verlaufserweiterung aktiviert, die standardmäßig nur für interaktive Shells aktiviert ist.

Siehe man bash Abschnitt HISTORY EXPANSION und SHELL BUILTIN COMMANDS Befehl set für Details.


Linux
  1. Zeitüberschreitung in einem Shell-Skript?

  2. Was bedeutet „:-“ in einem Shell-Skript?

  3. Wie löst man ein Ereignis im Shell-Skript aus, wenn ein USB-Gerät entfernt wird?

  4. Verstümmelte Geschichte?

  5. Prozesse in einer Sitzung in einer interaktiven Shell oder in einem Skript?

Wie führe ich einen Befehl in einem Shell-Skript aus?

Shell-Skript zum Drucken der Sternenpyramide

Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

Shell-Skript parallel ausführen

Aktuelles Verzeichnis des Shell-Skripts?

Fordert den Benutzer auf, sich als Root anzumelden, wenn ein Shell-Skript ausgeführt wird