首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量从循环存储到文件

如何将变量从循环存储到文件
EN

Stack Overflow用户
提问于 2017-02-16 11:25:20
回答 1查看 43关注 0票数 1

我试图将在下面的循环中创建的变量$d、$tf_name、$db_orig存储到一个文件中。我希望以一个以选项卡分隔的MY_FILE.txt结束,该选项卡包含以下字段$d、$tf_name、$db_orig以及这组变量的每一次迭代,这些变量将存储在文件MY_FILE.txt的新行中。

代码语言:javascript
复制
MY_ARRAY=() 
for d in */
   do

   IN=$d
   folderIN=(${IN//_/ })
   tf_name=${folderIN[-1]%/*}
   db_orig=${folderIN[-2]%/*};

ENTRY="$d\t$tf\t$id\t$db_orig\n"
MY_ARRAY+=$ENTRY

done

$MY_ARRAY > MY_FILE.txt

它不承认\t和\n分别为TAB和NEWLINE。它在数组MY_ARRAY中将彼此相邻的所有值存储在一行中,而不使用TAB。

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 11:58:44

是的,这是因为$MY_ARRAY > MY_FILE.txt不是有效的命令。

您需要将数组打印到文件中。

为了正确地打印它,您需要使用

echo -e "${MY_ARRAY[@]}" >fileprintf

由人回音

代码语言:javascript
复制
echo -e : enable interpretation of backslash escapes

此外,如果需要将$ENTRY存储到数组中,则需要这样做:

代码语言:javascript
复制
MY_ARRAY+=("$ENTRY")

在任何情况下,您都可以在不需要数组的情况下这样做。您只需将+=应用于条目:ENTRY+="$d\t$tf\t$id\t$db_orig\n"

测试:

代码语言:javascript
复制
$ e+="a\tb\tc\td\n"
$ e+="aa\tbb\tcc\tdd\n"
$ e+="aaa\tbbb\tccc\tddd\n"
$ echo -e "$e"
a       b       c       d
aa      bb      cc      dd
aaa     bbb     ccc     ddd

# Test with array
$ e="a\tb\tc\td\n" && myar+=("$e")
$ e="aa\tbb\tcc\tdd\n" && myar+=("$e")
$ e="aaa\tbbb\tccc\tddd\n" && myar+=("$e")
$ echo -e "${myar[@]}"
a       b       c       d
 aa     bb      cc      dd
 aaa    bbb     ccc     ddd

#Alternative array printing
$ for i in "${myar[@]}";do echo -en "$i";done
a       b       c       d
aa      bb      cc      dd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42272586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档