我有一个带有一些文件路径的文件。像这样:
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 中执行,但可能不会。