每当我在bash CLI中运行命令时,我都会得到正确的输出
date +%Y%-m%d%j%M%S
202111063103528
然而,当我在bash脚本中运行这个时,我不会得到一个可以在以后的变量中使用的简单数字。我最终想用它来备份我生成的旧CSV文件。例如
#Doesn't print out correct date
DATE='date +%Y%-m%d%j%M%S'
echo $DATE
# Ultimately, wanting to feed that $DATE string here
if [ -f "$CSV_OUTFILE" ]; then
echo "CSV file already exists. Renaming $CSV_OUTFILE to $CSV_OUTFILE.$DATE"
mv $CSV_OUTFILE $CSV_OUTFILE.$DATE
exit 1
fi
您将字符串date +%Y%-m%d%j%M%S
分配给了$DATE
。它包含一个空格,因此在mv
中使用不带双引号的$DATE
将其扩展为两个单词。
使用反引号而不是引号来捕获命令的输出:
DATE=`date +%Y%-m%d%j%M%S`
或者,最好使用$(...)
语法(因为它可以嵌套,所以更好(:
DATE=$(date +%Y%-m%d%j%M%S)