首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在终端中使用变量

在终端中使用变量
EN

Stack Overflow用户
提问于 2018-09-12 08:01:26
回答 1查看 442关注 0票数 1

我写了这段代码:

代码语言:javascript
复制
cat /etc/passwd | cut -d : -f1 | sed -n "${FT_LINE1}, ${FT_LINE2} p"

输出:

代码语言:javascript
复制
sed: -e expression #1, char 1: unknown command: `,'

但是我对变量$FT_LINE1, $FT_LINE2有一个问题。

当我使用常量而不是变量时,此代码正确工作。

代码语言:javascript
复制
cat /etc/passwd | cut -d : -f1 | sed -n "3, 5 p"

我试着用这些构造:

代码语言:javascript
复制
sed -n -e "${FT_LINE1}, ${FT_LINE2} p"
sed -n "{$FT_LINE1}, {$FT_LINE2} p"
sed -n "${FT_LINE1},${FT_LINE2} p"
sed -n "${FT_LINE1}, ${FT_LINE2}" p
sed -n "$FT_LINE1, $FT_LINE2" p

但错误依然存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 13:23:05

正如https://stackoverflow.com/questions/52290281/using-variables-in-terminal/52296285#comment91528490_52290281's comments中所指出的,sed地址范围不能为空,必须将shell变量${FT_LINE1}${FT_LINE2}都设置为适当的值。

再现错误的最简单方法是:

代码语言:javascript
复制
sed ,

其中产出:

代码语言:javascript
复制
sed: -e expression #1, char 1: unknown command: `,'

因为,而不是sed命令,所以它只是分隔范围地址的分隔符。

它可能有助于研究一些其他相关的错误。让我们添加一个起始地址1

代码语言:javascript
复制
sed 1,

输出:

代码语言:javascript
复制
sed: -e expression #1, char 2: unexpected `,'

这似乎没有帮助,因为它应该期待一个地址后的,。现在,让我们添加第二个地址1

代码语言:javascript
复制
sed 1,1

输出:

代码语言:javascript
复制
sed: -e expression #1, char 3: missing command

稍微好一点,但实际上缺少命令的是char 4,或者更确切地说,char 3后面缺少一个命令。

现在,让我们添加一个命令和一些输入,它可以工作:

代码语言:javascript
复制
echo foo | sed 1,1p

输出:

代码语言:javascript
复制
foo
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52290281

复制
相关文章

相似问题

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