【问题标题】:Comment a statement in shell script file using sed command at run time?在运行时使用 sed 命令注释 shell 脚本文件中的语句?
【发布时间】:2017-11-17 20:49:48
【问题描述】:

我正在尝试使用 sed 命令在 shell 脚本文件中注释 if 语句。

代码sn-p:

if[$z='LZ'||$x='LW']
then
        echo "This my test for sed and I am successful"
else
        echo "This my test for sed and my try failed"
fi

我用过

**sed -i -e 's\if\#if\g' test.sh**

它有效,但如果我给出以下命令:

**sed -i -e "s\if[$z='LZ'||$x='LW']\#if[$z='LZ'||$x='LW']\g" test.sh**

没用

如果您需要更多数据,请告诉我。 提前致谢。

【问题讨论】:

  • 你想做什么...如果你注释掉 if,什么匹配 else 和 fi?这没有意义。您最好说明您要解决的问题。
  • @HuStmpHrrr 目前我正在尝试仅评论这一行并添加另一行,好像是假的
  • 不,这不是你想要做的......如果你想拥有 if 分支进行测试或任何原因,你应该通过变量控制它,并将该变量默认设置为 false。类似于 $DEBUG_OPT$。如果你有很多这样的,你应该考虑使用函数。
  • 在将其发布到此处的问题中之前,请考虑通过 shellcheck.net 运行您的 shell 脚本。虽然您的问题是关于如何使用 sed 匹配各种问题,但您的源文本是无法运行的损坏脚本这一事实可能会分散注意力。

标签: shell unix sed


【解决方案1】:

当你想匹配 if 语句时(它缺少一些空格,修复它),只需用点替换困难的字符。

sed -i -e 's/if.$z=.LZ.||$x=.LW.]/#&/' test.sh

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多