いくつかのファイルのパスを持つファイルがあります。このような:
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 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パラメータ拡張\を使用して置き換えます/
これを行う最もポータブルな方法(つまり、bash拡張機能に依存しないtr)は、コマンドを使用することです。
tr \\\\ / < etwas.txt | while read LINE
do
web=$LINE
echo $web
done
(4倍のバックスラッシュ?!ええ、シェルとそれ自体の両方trがバックスラッシュをエスケープ文字として扱うため、このコンテキストで文字通りのバックスラッシュを取得するには、そのうちの4つを記述する必要があります'\\'。)
警告:入力をに配管すると、ループの内容がサブシェルで実行されるwhile 可能性がありますが、そうではない可能性があります。