“Command not found” piping a variable to cut when output stored in a variable
本问题已经有最佳答案,请猛点这里访问。
在bash脚本中,我使用变量来保存这样的路径:
1 | MY_DIR=/just/a/string/to/my/path |
我想删除它的最后两部分,所以它看起来像这样:
1 | /just/a/string |
我正在使用'cut'来做,像这样:
1 | echo $MY_DIR | cut -d'/' -f-4 |
输出是我所期望的。 精细。
但我想存储在另一个变量中,如下所示:
1 | MY_DIR2=$($MY_DIR | cut -d'/' -f-4) |
当我执行脚本时,我收到错误:
1 | ... /just/a/string/to/my/path: No such file or directory |
为什么带有echo的直接输出工作,但是将输出存储在变量中不是?
您需要使用管道将输入字符串传递给shell命令,在这种情况下,
1 | dir2=$(echo"$MY_DIR" | cut -d'/' -f-4) |
(或)使用here-string,它是一个内置的shell而不是启动外部shell进程
1 | dir2=$(cut -d'/' -f-4 <<<"$MY_DIR") |
使用严重重音(`)来模拟命令,并使用echo。
1 | MY_DIR2=`echo $MY_DIR | cut -d'/' -f-4` |