Bashスクリプトでエイリアスを使用する

Bashスクリプトでエイリアスを使用する

私のコードにエイリアスを使用していますが、最初は動作し、現在の時刻を表示しますが、2番目に呼び出すと過去の時刻が表示されます(現在の時刻ではなく前の時刻が表示されます)。

  GNU nano 6.2                            aliases.sh                                     
#!/bin/bash

shopt -s expand_aliases
alias TODAY="date"
echo "This shell represent differences between static substitution and dynamic substitut>
echo "==============================================================================="

DATE=`date`

echo "Static substitution"
echo "Start of bash script is: $DATE"
echo "Now I'm going to sleep for one minute"
sleep 5s

echo " end of the script: $DATE"

echo "------------------------------------------------------------------------------"
echo "Dynamic Substitution"

DDATE=`TODAY`
echo " Current Date is $DDATE"
echo "Now I'm going to sleep for one minute"
sleep 30s
echo "end of script date is $DDATE"`

答え1

日付を変数に設定すると、一度だけ呼び出され、変数は静的参照になります。

次のことができます。

echo "------------------------------------------------------------------------------"
echo "Dynamic Substitution"

echo " Current Date is $(today)"
echo "Now I'm going to sleep for one minute"
sleep 30s
echo "end of script date is $(today)"

通常、$(...)バックティックよりもコマンド置換が推奨されます。

関連情報