作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我要替换以下字符串的要求
OPTIONS="-p ${PIDFILE}"
与
OPTIONS_1234="-p ${PIDFILE_1234} -ORBEndpoint iiop://10.12.23.34:1234"
OPTIONS_1235="-p ${PIDFILE_1235} -ORBEndpoint iiop://10.12.23.34:1235"
OPTIONS_1236="-p ${PIDFILE_1236} -ORBEndpoint iiop://10.12.23.34:1236"
为此我正在按照脚本来解决
sed '0,/\PIDFILE=\/var\/run\/Naming_Service.pid/s//\PIDFILE_13021=\/var\/run\/Naming_Service_13021.pid\n\PIDFILE_13022=\/var\/run\/Naming_Service_13022.pid\n\PIDFILE_13023=\/var\/run\/Naming_Service_13023.pid\n /' tao > tao_pid
sed '0,/\OPTIONS="-p ${PIDFILE}"/ s//\OPTIONS_13021="-p ${PIDFILE_13021} -ORBEndpoint iiop:\/\/10.12.23.34:13021"\n\OPTIONS_13022="-p ${PIDFILE_13022} -ORBEndpoint iiop:\/\/10.12.23.34:13022"\n\OPTIONS_13023="-p ${PIDFILE_13023} -ORBEndpoint iiop:\/\/10.12.23.34:13023"\n /' script > new_script
但是如果最终用户想再添加一个
OPTIONS_1236="-p ${PIDFILE_1236} -ORBEndpoint iiop://10.12.23.34:1237"
很难维护特殊字符和所有字符。任何人都可以建议对最终用户来说应该很容易的最佳优化方式
最佳答案
您可以设置一个具有所需值的变量并将其注入(inject)到 sed 命令中:
num=1234;
sed 's~^\(OPTIONS\)="\(-p \${PIDFILE\)}~\1'"_$num"'="\2'"_$num"'} -ORBEndpoint iiop://10.12.23.34:'"$num"'~' <<< 'OPTIONS="-p ${PIDFILE}"'
输出::
OPTIONS_1234="-p ${PIDFILE_1234} -ORBEndpoint iiop://10.12.23.34:1234"
使用循环:
for num in 1234 1235 1236; do
sed 's~^\(OPTIONS\)="\(-p \${PIDFILE\)}~\1'"_$num"'="\2'"_$num"'} -ORBEndpoint iiop://10.12.23.34:'"$num"'~' <<< 'OPTIONS="-p ${PIDFILE}"'
done
输出:
OPTIONS_1234="-p ${PIDFILE_1234} -ORBEndpoint iiop://10.12.23.34:1234"
OPTIONS_1235="-p ${PIDFILE_1235} -ORBEndpoint iiop://10.12.23.34:1235"
OPTIONS_1236="-p ${PIDFILE_1236} -ORBEndpoint iiop://10.12.23.34:1236"
关于linux - 如何制作 shell 脚本以方便最终用户进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612352/
在javascript中,我可以这样写 console.log( person.name || person.nickname || '-' ) 然后会先查找name字段,如果找不到,会回退到nick
在为通用接口(interface)编写回调时,定义他们自己负责创建和访问的本地数据可能很有用。 在 C 中,我只使用一个空指针,类 C 示例: struct SomeTool { int ty
我是一名优秀的程序员,十分优秀!