在变量中使用sed命令



我有以下变量TABLES,有多行

TABLES="foobar
test
bar
foo
"

我有一个变量SKIP与这个sed命令

$ echo $SKIP
/bar/d;/foo/d;

我想在sed上使用它,像这样

echo $TABLES | sed "$SKIP"

但是这没有返回任何结果!如果我将变量替换为当前内容,它会起作用

我做错了什么?

我做错了什么?

您没有引用变量扩展。未加引号的变量展开进行分词,也在换行符上分割展开的结果,将其变成单词。你在做:

echo foobar test bar foo | ...

因为echo用空格连接参数,所以这实际上是一行。/bar/d删除该行

引用变量展开以防止分字。使用shellcheck检查脚本

echo "$TABLES" | sed "$SKIP"

最新更新