我有一个带有一些文件路径的文件。像这样:
C:\Users\peter\workspace\etwas.txt
我试着用这个程序阅读
while read LINE
do
web=$LINE
echo $web
done <etwas.txt
结果:
C:Userspeterworkspaceetwas.txt
我会以这种形式阅读
C:/Users/peter/workspace/etwas.txt
你怎么能读懂它?
尝试仅使用bash 内置函数:
while read -r LINE; do
web="${LINE//\\//}"
echo "$web"
done < etwas.txt
$ cat etwas.txt
C:\Users\peter\workspace\etwas.txt
$ while read -r LINE; do
> web="${LINE//\\//}"
> echo "$web"
> done < etwas.txt
C:/Users/peter/workspace/etwas.txt
我使用bash 参数扩展来\
替换/
最便携的方法(即不依赖 bash 扩展)是使用tr
命令。
tr \\\\ / < etwas.txt | while read LINE
do
web=$LINE
echo $web
done
(四个反斜杠?!是的,因为shell 和它本身都tr
将反斜杠视为转义字符,因此您需要编写其中四个才能在这种情况下获得文字反斜杠。'\\'
也可以。)
警告:管道输入while
可能会导致循环内容在子shell 中执行,但可能不会。