Bash在读取语法时使用附加到变量

时间:2013-09-23 12:32:56

标签: bash while-loop

我的文件如下:

/usr/local/bin
/bin
/usr/bin
/usr/local/sbin
/usr/sbin
/sbin
/home/user/.local/bin
/home/user/bin
/home/user/perl5/bin

现在我想在读取语法的同时使用冒号连接行,如下所示:

cat file | while read data; do path="$path:$data"; done && echo $path

但是上面的代码不能正常工作,$ path变量仍为空,有什么问题?

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作输出:

$ tr -s '\n' ':' <file
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/.local/bin:/home/user/bin:/home/user/perl5/bin

它用冒号替换所有新行。

关于语法中的错误,请注意正确的语法是:

while read data
do
   ... things ...
done < file

答案 1 :(得分:1)

我们不需要循环或外部命令。

path=$(<file) && path=${path//$'\n'/:} && echo "$path"