シェルスクリプトとして実装すると、履歴の置換は失敗します。

シェルスクリプトとして実装すると、履歴の置換は失敗します。

次のコマンドはコマンドラインから実行されます。

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

出力 09_03_2016

ただし、シェルスクリプトでこれを行うと機能しません。

#! /bin/bash

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

出力! :サム

ベストアンサー1

スクリプトで次のディレクティブを使用します。

set -o history
set -o histexpand

これにより、基本的に対話型シェルでのみ有効な履歴拡張が可能になります。

詳しくは、man bashセクションHISTORY EXPANSIONSHELL BUILTIN COMMANDSコマンドを参照してくださいset

おすすめ記事