增加与bash
发布时间:2020-12-15 19:28:03 所属栏目:安全 来源:网络整理
导读:我试图在.xml文件中增加一个变量。标签可能在文件中的100次或两次。我正在尝试添加一个值,这将增加数量的次数。我已经包括了我正在处理的一些示例代码,但是当我运行脚本时,它只会放一个而不是进一步增加。对我做错了的建议会很好。 for xmlfile in $(find
我试图在.xml文件中增加一个变量。标签可能在文件中的100次或两次。我正在尝试添加一个值,这将增加数量的次数。我已经包括了我正在处理的一些示例代码,但是当我运行脚本时,它只会放一个而不是进一步增加。对我做错了的建议会很好。
for xmlfile in $(find $DIRECTORY -type f -name *.xml); do TFILE="/tmp/$directoryname.$$" FROM='><process>' TO=' value=""><process>' i=0 while [ $i -lt 10 ]; do i=`expr $i + 1` FROM='value=""' TO='value="'$i'"' done sed "s/$FROM/$TO/g" "$xmlfile" > $TFILE && mv $TFILE "$xmlfile" done while循环是我刚刚测试代码的东西。它将插入< process>但它不会插入增量。 我的最终目标: <process>value="1"</process> <process>value="2"</process> <process>value="3"</process> <process>value="4"</process> 只要< process>存在于需要增加的文件中。
为了在bash中正确增加,请使用for循环(C样式):
n=10 for ((i=1; i<=n; i++)) { printf '<process>value="%d"</process>n' $i } OUTPUT <process>value="1"</process> <process>value="2"</process> <process>value="3"</process> <process>value="4"</process> <process>value="5"</process> <process>value="6"</process> <process>value="7"</process> <process>value="8"</process> <process>value="9"</process> <process>value="10"</process> 注意 expr是用于古代shell代码进行数学运算的程序。在像Pash这样的Posix shell中,使用$((expression))。在bash和ksh93中,如果不需要在扩展中使用结果,还可以使用((expression))或表达式。 编辑 如果我误解了你的需求,你有一个这样的空白值的文件: <process>value=""</process> 尝试这个 : $ perl -i -pe '$c++; s/<process>value=""/<process>value"$c"/g' file.xml <process>value"1"</process> <process>value"2"</process> <process>value"3"</process> <process>value"4"</process> <process>value"5"</process> <process>value"6"</process> <process>value"7"</process> -i开关编辑文件为真,所以要小心。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |