Bash使用while read语法附加到变量
我有一个如下所示的文件:Bash使用while read语法附加到变量,bash,while-loop,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 $ tr -s '\n' ':' <file /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/.local/bin:/home/us
/usr/local/bin
/bin
/usr/bin
/usr/local/sbin
/usr/sbin
/sbin
/home/user/.local/bin
/home/user/bin
/home/user/perl5/bin
$ 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语法通过冒号连接这些行,如下所示:
cat file | while read data; do path="$path:$data"; done && echo $path
但是上面的代码没有达到我预期的效果,$path变量仍然为空,有什么问题吗?您可以通过以下操作获得此输出:
/usr/local/bin
/bin
/usr/bin
/usr/local/sbin
/usr/sbin
/sbin
/home/user/.local/bin
/home/user/bin
/home/user/perl5/bin
$ 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
$tr-s'\n'':'我们不需要循环或外部命令
path=$(<file) && path=${path//$'\n'/:} && echo "$path"
path=$(可能是重复的,谢谢,我学习了一些关于管道和PIDs+1的循环语法。+0对于tr命令,它确实用冒号替换了所有的换行符,包括最后一个,它会生成一个不需要的尾随冒号(上面的输出中缺少)。