在bash终端中循环并应用命令

时间:2018-10-11 05:39:06

标签: bash xslt

我正在尝试使用Mac中的终端设置一些脚本,在该终端中,我想执行以下步骤:

计算特定元素的XML文件中的所有出现次数。 应用样式表,该样式表将创建原始文件的新子集,每个新文件应包含10个元素的子集。

脚本如下所示,由于我是bash脚本的新手,因此我需要帮助。

countElements =$(grep "<test>" /Users/test/Downloads/xml.xml | wc -l)
start = 0;
for f in /Users/test/Downloads/*.xml; 
{have a loop here saying while start <= countelements apply the following command}
     do xsltproc --stringparam param1 $countElements param2 $start transform2.xsl data2.xml > output$start$countElements.html
start = start + 10
{end while}
done

1 个答案:

答案 0 :(得分:1)

像这样? (未试用)

dir='/Users/test/Downloads'

countElements=$(grep '<test>' "$dir"/xml.xml | wc -l)
start=0
for f in "$dir"/*.xml  
do
    while (( start <= countelements )) 
    do
        xsltproc --stringparam param1 $countElements param2 $start transform2.xsl data2.xml > output$start$countElements.html
        start=$((start + 10))
    done
done

作业中的=周围不允许有空格,结尾的分号;无效。为了灵活起见,我使用了dir变量。