我的文件如下:
/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变量仍为空,有什么问题?
答案 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"