GNU/Linux >> Linux Esercitazione >  >> Linux

La sostituzione della cronologia non riesce quando viene implementata nello script della shell?

Questa domanda ha già una risposta qui :L'espansione della cronologia è disabilitata negli script?

(1 risposta)
Chiusa 1 anno fa.

Il comando seguente funziona nella riga di comando

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

Uscita 09_03_2016

Ma quando lo faccio nello script della shell non funziona

#! /bin/bash

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

Uscita!:3

Risposta accettata:

Usa le seguenti direttive nel tuo script:

set -o history
set -o histexpand

Ciò consentirà l'espansione della cronologia che è abilitata solo per le shell interattive per impostazione predefinita.

Vedi man bash sezione HISTORY EXPANSION e SHELL BUILTIN COMMANDS comando set per i dettagli.


Linux
  1. Esecuzione di script di shell in parallelo

  2. Directory corrente dello script Shell?

  3. impossibile eseguire il file binario quando si tenta di eseguire uno script di shell su Linux

  4. Procedura:cronologia Bash/shell illimitata?

  5. Richiedi all'utente di accedere come root durante l'esecuzione di uno script di shell

Cosa significa `:-` in uno script di shell?

Come attivare un evento nello script della shell quando viene rimosso un dispositivo USB?

Storia storpiata?

Processi in una sessione in una shell interattiva vs in uno script?

Il significato di $? In uno script di shell?

Come eseguire un comando in uno script della shell?