我的问题
我有这个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
之类的日期,因为它们使日期更容易按正确的顺序排序。