我有一个ID文件(my_ID_file),每行一个ID,没有其他多余的白色空格.它是使用cut命令从另一个文件创建的.该文件看起来像101行...
PA10
PA102
PA103
PA105
PA107
PA109
Run Code Online (Sandbox Code Playgroud)
我试图在for循环中使用这些ID来创建目录结构.所以我使用readarray函数来创建数组...
readarray TIDs < my_ID_file
Run Code Online (Sandbox Code Playgroud)
然后使用for循环来创建目录结构......
for T in "${TIDs[@]}"
do
mkdir "$T"_folder
done
Run Code Online (Sandbox Code Playgroud)
这会产生名为....的目录
PA10?_folder
PA102?_folder
PA103?_folder
PA105?_folder
PA107?_folder
PA109?_folder
Run Code Online (Sandbox Code Playgroud)
但是,如果我手动声明数组....
TIDs=(PA10 PA102 PA103 PA105 PA107 PA109)
Run Code Online (Sandbox Code Playgroud)
然后运行for循环我得到正确的目录结构,如....
PA10_folder
PA102_folder
PA103_folder
PA105_folder
PA107_folder
PA109_folder
Run Code Online (Sandbox Code Playgroud)
这些问号来自哪里?如何从这样的文件中声明数组,而不会在后续使用数组时出现这个问号?
谢谢
您的文本文件具有DOS样式的行结尾."?" 出现是因为回车会弄乱ls输出.尝试od -c my_ID_file
解: dos2unix my_ID_file
#2:readarray默认情况下不删除该行的换行符.你真的想要
readarray -t TIDs < my_ID_file
Run Code Online (Sandbox Code Playgroud)
参考:http://www.gnu.org/software/bash/manual/bashref.html#index-mapfile