【发布时间】:2021-05-26 14:39:32
【问题描述】:
#!/bin/bash
Dir=""
while read line
do echo "Record is :$line"
Dir+="Dir,$line"
done < dir.csv
echo $Dir
其中dir.csv 是此处的输入文件,其中包含以下数据:
/example/people/
/book/
/book/english/
我想将行的值附加到一个变量中,例如
/example/people/,/book/,/book/english/
有没有什么简单的方法可以通过 shell 脚本来实现呢?上面的脚本只显示最后一个值 ex:/book/english/
【问题讨论】:
-
请编辑包含和格式化您的脚本的帖子,以便更好地理解它并给您一个有用的答案。
-
tr '\n' ',' < dir.csv怎么样 -
保持您当前的代码结构,您有
Dir+="Dir,$line",但您应该使用Dir="$Dir,$line"或Dir="$Dir${Dir:+,}$line",其中更复杂的版本避免使用前导逗号。这适用于从 Bourne shell 派生的任何 shell(sh、bash、zsh、dash、ksh,...)。在 Bash(可能还有其他一些现代 shell)中,您可以使用Dir+="${Dir:+,}$line",其中${Dir:+,}部分仅在Dir设置且非空时添加逗号 - 再次避免使用前导逗号。见Shell parameter expansion。