如何将剪切命令的输出带入变量?

问题描述

这是一个针对 Linux bash-shell-script 的问题。

我想将“剪切命令”的输出带入一个变量中。但它不起作用。变量保持为空。

这是我所做的:

MyName@MyName:~
$ fixedFilePath=aa.zz
MyName@MyName:~
$ echo $fixedFilePath
aa.zz
MyName@MyName:~
$ EP=$fixedFilePath | rev | cut -d '.' -f 1 | rev
MyName@MyName:~
$ echo $EP

MyName@MyName:~
$ 

如您所见:现在变量 $EP 中没有任何内容。我的期望是,在 $EP 中现在是“zz”。

解决方法

当您分配给 EP 时,第一部分 $fixedFilePath 在标准输出上没有留下任何可供管道使用的内容。它所做的是执行该变量的内容。您需要echo

echo $fixedFilePath | rev | cut -d '.' -f 1 | rev

现在要捕获该输出,您需要将其作为作业的一部分执行。有多种方法可以解决这个问题,但我发现在您的案例中有效的是在 backticks 中围绕它:

EP=`echo $fixedFilePath | rev | cut -d '.' -f 1 | rev`