bash - 根据变量运行 sed 命令
问题描述
我正在尝试sed
根据用户输入运行变量命令:
#!/bin/bash
ACTION=$1
if [ "wp" == "$ACTION" ]
then
MODIFIEDCONF='sed -i -e "/#Begin wp redirect/,/#End wp redirect/d" /root/test-conf'
else
MODIFIEDCONF='sed -i -e "/#Begin ghost redirect/,/#End ghost redirect/d" /root/test-conf'
fi
RESULT=$($MODIFIEDCONF)
但我收到错误:
sed: -e expression #1, char 1: unknown command: `"'
如何修复错误?或者有更好的方法吗?
解决方案
把事情简单化。在一个变量中设置你的 sed 命令模式,然后执行它。
case "$ACTION" in
wp) cmd="/#Begin wp redirect/,/#End wp redirect/d" ;;
*) cmd="/#Begin ghost redirect/,/#End ghost redirect/d" ;;
esac
sed -i "$cmd" /root/test-conf
或者为了提高可读性,只需设置密钥并嵌入。
case "$ACTION" in
wp) key=wp ;;
*) key=ghost ;;
esac
sed -i "/#Begin $key redirect/,/#End $key redirect/d" /root/test-conf
抽象是力量,但不必要的抽象是混淆。
推荐阅读
- java - 您可以将 Query 对象作为参数发送到 SpringData Repository 方法吗?
- javascript - 选项下拉菜单未关闭
- css - 为什么我在绝对位置的权利不起作用?
- javascript - 字符串变量不呈现
- c# - TaskContinuationOptions.AttachedToParent 的理解
- windows - 如何在文件资源管理器中将目录的内容显示为缩略图?
- keras - 无法使用 ktrain 模型预测前端流光,请提供有关如何为预测功能提供输入的建议
- java - 为什么列表即使按值传递也会更新?
- c# - 如何更改默认模型错误“值''无效。”?
- android - Android Wi-fi RGB 控制应用