在bash脚本中,我使用变量来保存这样的路径:
MY_DIR=/just/a/string/to/my/path
我想删除它的最后两部分,看起来像这样:
/just/a/string
我正在使用'cut'来做,像这样:
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的直接输出有效,但是将输出存储在变量中不是?
答案 0 :(得分:1)
您需要使用管道将输入字符串传递给shell命令,在这种情况下cut
或任何标准shell命令,从stdin读取,行为。一些方法可以使用管道
dir2=$(echo "$MY_DIR" | cut -d'/' -f-4)
(或)使用here-string,它是内置的shell而不是启动外部shell进程
dir2=$(cut -d'/' -f-4 <<< "$MY_DIR")
答案 1 :(得分:-1)
使用严重重音(`)来模拟命令,并使用echo。
MY_DIR2=`echo $MY_DIR | cut -d'/' -f-4`