在bash脚本中,我使用一个变量来保存如下所示的路径:
MY_DIR=/just/a/string/to/my/path我想移除它的最后两个部分,看起来是这样的:
/just/a/string我用“切”来做,就像这样:
echo $MY_DIR | cut -d'/' -f-4输出是我所期望的。很好。但是我想要存储在另一个变量中,就像这样:
MY_DIR2=$($MY_DIR | cut -d'/' -f-4)当我执行脚本时,我得到了错误:
... /just/a/string/to/my/path: No such file or directory为什么带有echo的直接输出可以工作,但是将输出存储在变量中却不能工作呢?
发布于 2017-11-14 12:36:02
您需要使用管道将输入字符串传递给shell命令,在这种情况下,cut或任何标准的shell命令、从stdin读取并对其执行操作。可以这样做的一些方法是使用管道。
dir2=$(echo "$MY_DIR" | cut -d'/' -f-4)(或)使用内置的shell字符串,而不是启动外部shell进程。
dir2=$(cut -d'/' -f-4 <<< "$MY_DIR")发布于 2017-11-14 12:35:01
使用严肃的重音(`)来模仿命令,也可以使用echo。
MY_DIR2=`echo $MY_DIR | cut -d'/' -f-4`https://stackoverflow.com/questions/47285981
复制相似问题