bash 变量插值 用连字符或下划线分隔变量

标签 bash variables string-interpolation

这是一个简单的脚本,用于查看文件是否已下载。在此脚本中,查找命令的计算结果始终为零——即使它没有找到任何东西。所以我把它注释掉了。

filename="day_CTRwFEES_hoo01M_" 上,我必须在文件名末尾添加下划线。

使用下划线 $filename_$yesterday.CSV 将两者分开是行不通的。 - 我不得不去掉下划线,将其添加到文件名中,然后组合变量以使其像这样工作 - $filename$yesterday

如果不在变量 $filename 的末尾添加下划线,我如何让它工作?

#!/bin/bash
set -x
dayofweek=$(/bin/date +%w)
today=$(/bin/date +%Y%m%d)
yesterday=$(/bin/date -d "1 day ago" +%Y%m%d)
friday_morning=$(/bin/date -d "3 days ago" +%Y%m%d)
filename="day_CTRwFEES_hoo01M_"

#if find /data/today/ -type f -name "$filename_$yesterday.CSV" ; then
if ls "/data/today/$filename$yesterday.CSV" ; then
    echo "successful"
else
    echo "$filename$yesterday.CSV was not downloaded, please check." | mail -s "$filename$yesterday.CSV not downloaded" casper@big_bank.com
    fi

casper@good_host5981dap:~/walt/morning_checks$ ./check_day_CTRwFEES_hoo01M
++ /bin/date +%w
+ dayofweek=5
++ /bin/date +%Y%m%d
+ today=20141024
++ /bin/date -d '1 day ago' +%Y%m%d
+ yesterday=20141023
++ /bin/date -d '3 days ago' +%Y%m%d
+ friday_morning=20141021
+ filename=day_CTRwFEES_hoo01M_
+ ls data/today/day_CTRwFEES_hoo01M_20141023.CSV
/data/today/day_CTRwFEES_hoo01M_20141023.CSV
+ echo successful
successful

~

最佳答案

通过告诉 bash 变量名结束的位置。

"${filename}_$yesterday.CSV"

关于bash 变量插值 用连字符或下划线分隔变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559617/

相关文章:

c# - 在插值字符串中使用 if 条件

java - 如何在 Java 中构建格式化字符串?

string - 排序列表并将排序后的值添加到 bash 中的新列表

javascript - 访问名称中具有特定值的特定数组

Python脚本递归打开目录中的.rar文件

Python 条件赋值运算符

C# 通过变量引用方法?

javascript - 如何在屏幕上打印函数的所有参数

PHP 加密数据,Bash 解密

python - git 2.5。 1's bash console doesn' t 打开python解释器