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 builtinsのみを使用してこれを試してください:

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

(4倍のバックスラッシュ?!ええ、シェルとそれ自体の両方trがバックスラッシュをエスケープ文字として扱うため、このコンテキストで文字通りのバックスラッシュを取得するには、そのうちの4つを記述する必要があります'\\'。)

警告:入力をに配管すると、ループの内容がサブシェルで実行されるwhile 可能性がありますが、そうではない可能性があります。

于 2013-02-24T21:40:51.470 に答える