bash子串的命令而不是变量?

时间:2018-06-13 11:37:30

标签: bash shell variables substring

我可以用bash做到这一点:

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

打印' ba' (' bar')的前两个字符。

现在我想对脚本/命令输出而不是变量执行相同操作,如下所示:

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

然后我收到一个错误:"糟糕的替换"。

当然我可以使用中间变量:

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

但有没有办法直接这样做?

P.S。 date命令只是一个示例,这不是以特定格式生成某些日期字符串。只是从任意shell命令输出中获取子字符串的一般概念。

3 个答案:

答案 0 :(得分:3)

不,BASH语法不允许任何类型的嵌套。您可以使用cut

等外部工具执行此操作
date | cut -c 1-10

Wed Jun 13

答案 1 :(得分:0)

替换date

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

您可以使用printf

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

man strftime了解更多格式修饰符。

答案 2 :(得分:0)

如果您希望今天的日期输出Stream(这是),那么

Wed Jun 13

请参阅系统上的$ date +'%a %b %e' Wed Jun 13 和/或date手册。