增加与bash

前端之家收集整理的这篇文章主要介绍了增加与bash前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在.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开关编辑文件为真,所以要小心。

猜你在找的Bash相关文章