私の質問
このスクリプトがありますrun.sh
。
#!/bin/bash
TODAY=$(date)
FILE="my_file.txt.\${TODAY}"
エコーすると、FILE
次のような結果が表示されます。
echo ${FILE}
Output: `my_file.txt.${TODAY}`
しかし、私はこれが欲しい:
echo ${FILE}
Output: `my_file.txt.15032023
私の回避策はありますが、より良いものが必要です。
eval echo ${FILE}
Output: `my_file.txt.15032023`
答え1
これはあなたが求めているものですか?
#!/bin/bash
TODAY=$(date +"%d%m%y")
FILE="my_file.txt.${TODAY}"
echo "${FILE}"
これで以下が./run.sh
生成されます。
user@wang$ ./test.sh
my_file.txt.150323
答え2
さて、いつでも以下を使用して手動で交換を実行できます${var/pattern/replacement}
。
$ FILE='my_file.txt.${TODAY}'
$ TODAY=123456
$ FILE="${FILE/'${TODAY}'/$TODAY}"
$ echo "$FILE"
my_file.txt.123456
または、デフォルトの出力形式が異なる"${FILE/'${TODAY}'/$(date +"%d%m%Y"}"
と思われるので、表示される形式で日付を取得してください。date
コメント付きの注:YYYY-MM-DD
またはなどの日付を使用すると、YYYYMMDD
日付を正しい順序で簡単に並べ替えることができます。