首页 > 解决方案 > 无法在bash中输入日期变量

问题描述

我有一个目录 /user/reports 下有许多文件,其中一个是:

report.active_user.30092018.77325.csv

我需要从上面的文件名中输出日期后的数字,即77325 。

我创建了以下命令以从文件名中查找值:

ls /user/reports | awk -F. '/report.active_user.30092018/ {print $(NF-1)}'

现在,我希望将当前日期作为变量传递给上面的命令并获得结果:

ls /user/reports | awk -F. '/report.active_user.$(date +'%d%m%Y')/ {print $(NF-1)}'

但没有得到所需的输出。

尝试过 bash 脚本:

#!/usr/bin/env bash

_date=`date +%d%m%Y`

 active=$(ls /user/reports | awk -F. '/report.active_user.${_date}/ {print $(NF-1)}')


 echo $active

但仍然输出为空白。

请帮助正确的语法。

标签: linuxbashawk

解决方案


正如@cyrus 所说,您必须在变量赋值中使用双引号,因为简单引号仅用于字符串而不用于包含变量。

基本用例

number=10
string='I m sentence with or wihtout var $number'
echo $string

正确的用例

number=10
string_with_number="I m sentence with var $number"
echo $string_with_number

您可以使用简单的引号,但不能使用所有字符串

number=10
string_with_number='I m sentence with var '$number
echo $string_with_number

推荐阅读