gpt4 book ai didi

bash - 如何使用 shell 脚本变量作为 sed 的参数?

转载 作者:行者123 更新时间:2023-11-29 08:48:13 25 4
gpt4 key购买 nike

我想做的是类似下面的事情:

#!/bin/sh
EMAIL="-e 's/SOMETHING//g'"

somecommand | sed "$EMAIL"

但我得到以下信息:

sed: -e expression #1, char 2: unknown command: `''

我尝试了很多变体。我知道这只是正确引用字符串的问题。我想这样做的原因是为了提高可读性,将一个很长的 sed 命令拆分开来。我应该只使用 sed 脚本文件(使用 -f 选项)吗?

更新:

我的实际脚本有点复杂:

#!/bin/sh
EMAIL="-e s/SOME THING//g -e s/SOME THING ELSE//g ..."

somecommand | sed "$EMAIL"

删除单引号后我得到:

sed: -e expression #1, char 18: unknown option to `s'

最佳答案

对于此类引用问题,您可以执行以下操作之一:

#!/bin/sh
SED_ARG="-e 's/SOMETHING//g'"
echo SOMETHING | eval sed "$SED_ARG"
echo SOMETHING | sed $SED_ARG

发生的事情是,在您的版本中,shell 使用一个参数(字符串“-e 's/SOMETHING//g'”)调用 sed,但您希望使用两个参数(“-e”)调用 sed "和 "'s/SOMETHING//g'")。 Eval 使 shell 以您想要的方式解释字符串,因为不引用参数以便发生分词。请注意,这种东西非常脆弱。

关于bash - 如何使用 shell 脚本变量作为 sed 的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1178839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com