我有这个脚本,并且有多个结果。
如何将多个结果输出到一个变量中?
示例:第一个循环的结果为英语,第二个循环的结果为意大利语。
我需要一个变量作为最终结果:英语意大利语
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
答案 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