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