私のコードにエイリアスを使用していますが、最初は動作し、現在の時刻を表示しますが、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)"
通常、$(...)
バックティックよりもコマンド置換が推奨されます。