bash подстрока команды вместо переменной? - PullRequest
0 голосов
/ 13 июня 2018

Я могу сделать это в bash:

foo=bar
echo ${foo:0:2}

, который печатает 'ba' (первые два символа 'bar').

Теперь я хочу сделать то же самое свывод сценария / команды вместо переменной, например так:

echo ${$(date):0:10}

Но тогда я получаю ошибку: "плохая замена".

Конечно, я могу использовать промежуточную переменную:

foo=$(date)
echo ${foo:0:10}

Но есть ли способ сделать это напрямую?

PS Команда date является лишь примером, она не о генерации какой-либо строки даты в определенном формате.Просто общая концепция взятия подстроки из произвольного вывода команды оболочки.

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Для замены date:

$ date
Wed Jun 13 14:57:38 EEST 2018

вы можете использовать printf:

$ printf "%(%a %b %d%n)T"
Wed Jun 13

man strftime для дополнительных модификаторов формата.

0 голосов
/ 13 июня 2018

Если вы хотите вывод Wed Jun 13 для сегодняшней даты (то есть это), тогда

$ date +'%a %b %e'
Wed Jun 13

См. Руководство для date и / или для strftime в вашей системе.

0 голосов
/ 13 июня 2018

Нет, синтаксис BASH не допускает вложенности.Вы можете сделать это, используя внешние утилиты, такие как cut:

date | cut -c 1-10

Wed Jun 13
...