如何在 shell 脚本中创建以逗号分隔的文件名字符串?

How to create a string of filenames separated by comma in shell script?

我正在尝试创建一个字符串,例如 (file1.txt、file2.txt、file3.txt)。 这 3 个文件名都在一个文件中。

ls file*.txt > lstfiles.txt

while read filename; do
  filename+=$line","
done <lstfiles.txt

这个returns我输出:

file1.txt,file2.txt,file3.txt,

如何找到循环的最后一次迭代,这样我就不会在末尾添加另一个逗号。

所需输出:

file1.txt,file2.txt,file3.txt

对于您的用例,我宁愿摆脱 while 循环并组合 sedtr 命令,如下所示:

sed -e '$ ! s/$/,/g' lstfiles.txt | tr -d '\n'

其中 sed 命令用逗号替换除最后一行以外的每一行结尾,tr 命令删除换行符。

虽然可能avoid using ls in scripts

printf '%s,' file*.txt |
sed 's/,$/\n/'

假设您的 sed\n 识别为换行符,并处理没有最终换行符的输入。