2

我有一个带有一些文件路径的文件。像这样:

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

你怎么能读懂它?

4

2 回答 2

4

尝试仅使用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 参数扩展\替换/

于 2013-02-24T20:19:39.463 回答
0

便携的方法(即依赖 bash 扩展)是使用tr命令。

tr \\\\ / < etwas.txt | while read LINE
do
    web=$LINE
    echo $web
done

(四个反斜杠?!是的,因为shell 和它本身tr将反斜杠视为转义字符,因此您需要编写其中四个才能在这种情况下获得文字反斜杠。'\\'也可以。)

警告:管道输入while 可能会导致循环内容在子shell 中执行,但可能不会。

于 2013-02-24T21:40:51.470 回答