for循环附加变量bash 6

时间:2018-12-08 17:40:05

标签: bash

我有这个脚本,并且有多个结果。

如何将多个结果输出到一个变量中?

示例:第一个循环的结果为英语,第二个循环的结果为意大利语。

我需要一个变量作为最终结果:英语意大利语

for i in $(ls -l $1/$2/);do
if [[ $i =~ .*\.idx$ ]];then
    tr -d '\r' < $1/$2/$i > $1/$2/newfile
    rm -f $1/$2/$i
    mv $1/$2/newfile $1/$2/$i
    results=$(cat $1/$2/$i |awk '/^# alt:/ { a[$3] } END { for (l in a) { printf("%s%s", c, l); c = " " } printf("\n") }')
    echo "Results for $i : $results"
fi
done

2 个答案:

答案 0 :(得分:0)

如果使用以下语法,则可以在单个变量中获得所有结果:

variable=$(command)

您可能会发现将代码放入函数然后按如下所示调用它很有用:

function command() {

# your code from above 

}

results=$( command "$@" )

答案 1 :(得分:0)

或者,将结果累加到另一个变量中:

RESULTS=""
for i in $(ls -l $1/$2/);do
if [[ $i =~ .*\.idx$ ]];then
    tr -d '\r' < $1/$2/$i > $1/$2/newfile
    rm -f $1/$2/$i
    mv $1/$2/newfile $1/$2/$i
    results=$(cat $1/$2/$i |awk '/^# alt:/ { a[$3] } END { for (l in a) { printf("%s%s", c, l); c = " " } printf("\n") }')
    RESULTS="$RESULTS$results "
fi
done
echo ${RESULTS%" "}  #Get rid of the trailing space