Не могу ввести переменную даты в bash - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть каталог / user / reports, в котором находится много файлов, один из них:

report.active_user.30092018.77325.csv

Мне нужен вывод в виде числа после даты, т.е. 77325 из файла вышеname.

Я создал нижеприведенную команду, чтобы найти значение из имени файла:

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

Но вывод по-прежнему пуст.

Пожалуйста, помогите с правильным синтаксисом.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Не разбирать ls

Вам не нужен awk для этого: вы можете управлять с помощью возможностей оболочки

for file in report.active_user."$(date "+%d%m%Y")"*; do
    tmp=${file%.*}      # remove the extension
    number=${tmp##*.}   # remove the prefix up to and including the last dot
    echo "$number"
done

См. https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

0 голосов
/ 30 сентября 2018

Как сказал @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...