gpt4 book ai didi

linux - 如何制作 shell 脚本以方便最终用户进行更改

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:03 25 4
gpt4 key购买 nike

这是我要替换以下字符串的要求

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/

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