GNU/Linux >> Belajar Linux >  >> Linux

Pergantian Riwayat Gagal Saat Diimplementasikan Dalam Script Shell?

Pertanyaan ini sudah memiliki jawaban di sini :Apakah perluasan riwayat dinonaktifkan di skrip?

(1 jawaban)
Tutup 1 tahun yang lalu.

Perintah di bawah ini berfungsi di baris perintah

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

Keluaran 09_03_2016

Tetapi ketika saya melakukan ini dalam skrip Shell, itu tidak berfungsi

#! /bin/bash

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

Keluaran !:3

Jawaban yang Diterima:

Gunakan arahan berikut dalam skrip Anda:

set -o history
set -o histexpand

Ini akan mengaktifkan perluasan riwayat yang hanya diaktifkan untuk shell interaktif secara default.

Lihat man bash bagian HISTORY EXPANSION dan SHELL BUILTIN COMMANDS perintah set untuk detailnya.


Linux
  1. Menentukan Jalur Ke Skrip Shell Bersumber?

  2. Proses Dalam Sesi Dalam Shell Interaktif Vs Dalam Skrip?

  3. Shell Script untuk mencetak piramida Bintang

  1. Skrip transliterasi untuk shell linux

  2. Kembali ke direktori sebelumnya di shell

  3. Bagaimana caranya:Riwayat Bash/Shell yang tidak terbatas?

  1. Tentukan Shell In Script Selama Runtime?

  2. Waktu Habis Dalam Skrip Shell?

  3. Apa Artinya `:-` Dalam Skrip Shell?