首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当输出存储在变量中时,“命令未找到”

当输出存储在变量中时,“命令未找到”
EN

Stack Overflow用户
提问于 2017-11-14 12:31:25
回答 2查看 1.7K关注 0票数 2

在bash脚本中,我使用一个变量来保存如下所示的路径:

代码语言:javascript
复制
MY_DIR=/just/a/string/to/my/path

我想移除它的最后两个部分,看起来是这样的:

代码语言:javascript
复制
/just/a/string

我用“切”来做,就像这样:

代码语言:javascript
复制
echo $MY_DIR | cut -d'/' -f-4

输出是我所期望的。很好。但是我想要存储在另一个变量中,就像这样:

代码语言:javascript
复制
MY_DIR2=$($MY_DIR | cut -d'/' -f-4)

当我执行脚本时,我得到了错误:

代码语言:javascript
复制
... /just/a/string/to/my/path: No such file or directory

为什么带有echo的直接输出可以工作,但是将输出存储在变量中却不能工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 12:36:02

您需要使用管道将输入字符串传递给shell命令,在这种情况下,cut或任何标准的shell命令、从stdin读取并对其执行操作。可以这样做的一些方法是使用管道。

代码语言:javascript
复制
dir2=$(echo "$MY_DIR" | cut -d'/' -f-4)

(或)使用内置的shell字符串,而不是启动外部shell进程。

代码语言:javascript
复制
dir2=$(cut -d'/' -f-4 <<< "$MY_DIR")
票数 3
EN

Stack Overflow用户

发布于 2017-11-14 12:35:01

使用严肃的重音(`)来模仿命令,也可以使用echo。

代码语言:javascript
复制
MY_DIR2=`echo $MY_DIR | cut -d'/' -f-4`
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47285981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档