在 bash 变量中附加 .txt 文件的内容
Append contents of .txt file in bash variable
我有一个 .txt 文件,其内容形式如下:
1003
1004
1005
1006
.
.
.
and so on
这些数字是文件夹路径的索引。例如
/Users/My_user/1003/files/
/Users/My_user/1004/files/
and so on
我想将不同路径的每个路径分配给一个 bash 变量,例如:
var = '/Users/My_user/1003/files/ /Users/My_user/1004/files/ /Users/My_user/1005/files/ (and so on)'
到目前为止我已经尝试过这样的事情:
for index in $(cat the_text.txt);
do
var = '/Users/My_user/$index/files'
done
但当然不行。有帮助吗?
将 for
循环中的行更改为 var="$var /Users/My_user/$index/files"
行吗?
您需要将值附加到您的变量:
for index in $(cat the_text.txt);
do
var="${var:+$var }/Users/My_user/$index/files"
done
PS。 var="${var:+$var }"
将避免领先 space
将它们放入一个数组中:
DIRPATHS=();
while read -r index;
do
DIRPATHS+=("/Users/My_user/$index/files/");
done < indices.txt
您可以在 Bash.
中读取文件而无需调用外部程序 (cat
)
在bash中,完全可以不用循环来完成:
$ cat the_text.txt
1003
1004
1005
1006
$ prefix="/Users/my_user/"
$ suffix="/files/"
$ mapfile -t var < the_text.txt
$ var=( "${var[@]/#/$prefix}" )
$ var=( "${var[@]/%/$suffix}" )
$ printf "%s\n" "${var[@]}"
/Users/my_user/1003/files/
/Users/my_user/1004/files/
/Users/my_user/1005/files/
/Users/my_user/1006/files/
那么如果你想要一个 space 分隔的字符串:
all_dirs=${var[*]}
我有一个 .txt 文件,其内容形式如下:
1003
1004
1005
1006
.
.
.
and so on
这些数字是文件夹路径的索引。例如
/Users/My_user/1003/files/
/Users/My_user/1004/files/
and so on
我想将不同路径的每个路径分配给一个 bash 变量,例如:
var = '/Users/My_user/1003/files/ /Users/My_user/1004/files/ /Users/My_user/1005/files/ (and so on)'
到目前为止我已经尝试过这样的事情:
for index in $(cat the_text.txt);
do
var = '/Users/My_user/$index/files'
done
但当然不行。有帮助吗?
将 for
循环中的行更改为 var="$var /Users/My_user/$index/files"
行吗?
您需要将值附加到您的变量:
for index in $(cat the_text.txt);
do
var="${var:+$var }/Users/My_user/$index/files"
done
PS。 var="${var:+$var }"
将避免领先 space
将它们放入一个数组中:
DIRPATHS=();
while read -r index;
do
DIRPATHS+=("/Users/My_user/$index/files/");
done < indices.txt
您可以在 Bash.
中读取文件而无需调用外部程序 (cat
)
在bash中,完全可以不用循环来完成:
$ cat the_text.txt
1003
1004
1005
1006
$ prefix="/Users/my_user/"
$ suffix="/files/"
$ mapfile -t var < the_text.txt
$ var=( "${var[@]/#/$prefix}" )
$ var=( "${var[@]/%/$suffix}" )
$ printf "%s\n" "${var[@]}"
/Users/my_user/1003/files/
/Users/my_user/1004/files/
/Users/my_user/1005/files/
/Users/my_user/1006/files/
那么如果你想要一个 space 分隔的字符串:
all_dirs=${var[*]}