我写了这段代码:
cat /etc/passwd | cut -d : -f1 | sed -n "${FT_LINE1}, ${FT_LINE2} p"输出:
sed: -e expression #1, char 1: unknown command: `,'但是我对变量$FT_LINE1, $FT_LINE2有一个问题。
当我使用常量而不是变量时,此代码正确工作。
cat /etc/passwd | cut -d : -f1 | sed -n "3, 5 p"我试着用这些构造:
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但错误依然存在。
发布于 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}都设置为适当的值。
再现错误的最简单方法是:
sed ,其中产出:
sed: -e expression #1, char 1: unknown command: `,'因为,是而不是sed命令,所以它只是分隔范围地址的分隔符。
它可能有助于研究一些其他相关的错误。让我们添加一个起始地址1
sed 1,输出:
sed: -e expression #1, char 2: unexpected `,'这似乎没有帮助,因为它应该期待一个地址后的,。现在,让我们添加第二个地址1
sed 1,1输出:
sed: -e expression #1, char 3: missing command稍微好一点,但实际上缺少命令的是char 4,或者更确切地说,char 3后面缺少一个命令。
现在,让我们添加一个命令和一些输入,它可以工作:
echo foo | sed 1,1p输出:
foohttps://stackoverflow.com/questions/52290281
复制相似问题