Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将变量从循环存储到文件_Arrays_Shell_Loops_Append - Fatal编程技术网

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

Arrays 如何将变量从循环存储到文件,arrays,shell,loops,append,Arrays,Shell,Loops,Append,我试图将在以下循环中创建的变量$d、$tf_name、$db_orig存储到一个文件中。我希望最终得到一个以MY_file.txt分隔的选项卡,其中包含以下字段$d、$tf_name、$db_orig,并将这组变量的每次迭代存储在MY_file.txt文件的新行中 MY_ARRAY=() for d in */ do IN=$d folderIN=(${IN//_/ }) tf_name=${folderIN[-1]%/*} db_orig=${folderIN

我试图将在以下循环中创建的变量$d、$tf_name、$db_orig存储到一个文件中。我希望最终得到一个以MY_file.txt分隔的选项卡,其中包含以下字段$d、$tf_name、$db_orig,并将这组变量的每次迭代存储在MY_file.txt文件的新行中

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识别为制表符和换行符。它将所有相邻的值存储在同一行(不带制表符)的数组MY_数组中


有什么帮助吗?

是的,发生这种情况是因为
$MY\u ARRAY>MY\u FILE.txt
不是有效的命令

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

为了正确打印,您需要使用
echo-e“${MY_ARRAY[@]}”>文件
printf

人工回声

echo -e : enable interpretation of backslash escapes
此外,如果需要将$ENTRY存储到数组中,则需要如下操作:

MY_ARRAY+=("$ENTRY")
在任何情况下,您都可以在不需要阵列的情况下执行此操作。您只需在条目中应用+=:
ENTRY+=“$d\t$tf\t$id\t$db\u orig\n”

测试:


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

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

为了正确打印,您需要使用
echo-e“${MY_ARRAY[@]}”>文件
printf

人工回声

echo -e : enable interpretation of backslash escapes
此外,如果需要将$ENTRY存储到数组中,则需要如下操作:

MY_ARRAY+=("$ENTRY")
在任何情况下,您都可以在不需要阵列的情况下执行此操作。您只需在条目中应用+=:
ENTRY+=“$d\t$tf\t$id\t$db\u orig\n”

测试:


@埃尔帕夫洛斯再次更新。如果你愿意,可以避免使用数组。非常感谢Georgios。问题解决,文件创建!另一个问题刚刚出现。在某些情况下,某些变量不存在。假设对于第三次迭代,$db_orig没有任何价值。是否可以在文件中创建第三行($d,$tf,$id),并在该特定字段$db_orig处使用NA或空白?在我的脚本中,对于这种情况根本没有条目。@elpavlos可以通过clasic bash方法解决(请参见man bash)。Test1:
d=“something”&&echo“${d:-“NA”}”
-->打印一些东西。测试2:
d=”“&&echo“${d:-“NA”}”
-->打印NA@elpavlos再次更新。如果你愿意,可以避免使用数组。非常感谢Georgios。问题解决,文件创建!另一个问题刚刚出现。在某些情况下,某些变量不存在。假设对于第三次迭代,$db_orig没有任何价值。是否可以在文件中创建第三行($d,$tf,$id),并在该特定字段$db_orig处使用NA或空白?在我的脚本中,对于这种情况根本没有条目。@elpavlos可以通过clasic bash方法解决(请参见man bash)。Test1:
d=“something”&&echo“${d:-“NA”}”
-->打印一些东西。测试2:
d=”“&&echo“${d:-“NA”}”
-->打印NA