空白があっても各行が無制限に保たれるようにファイルから bash スクリプトに行を渡すにはどうすればよいですか?

空白があっても各行が無制限に保たれるようにファイルから bash スクリプトに行を渡すにはどうすればよいですか?

一方:

$ cat lines.txt
a/b
'c/d e/f'

$ cat 1.sh
#!/bin/sh
./2.sh `cat lines.txt`

$ cat 2.sh
#!/bin/sh
echo p1=$1
echo p2=$2
echo p3=$3

$ ./1.sh
p1=a/b
p2='c/d
p3=e/f'

2つの引数だけを受け取るようlines.txtに変更1.shするにはどうすればよいですか?2.sh

  • a/b
  • c/d e/f

ベストアンサー1

IFS(内部フィールド区切り文字)を改行に設定します。

$ cat 1.sh 
#!/bin/sh
OLD_IFS=$IFS
IFS="
"
./2.sh `cat lines.txt`
IFS=$OLD_IFS

$ ./1.sh
p1=a/b
p2='c/d e/f'
p3=

おすすめ記事