Question: Given:

```
$ 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'

```

How do I change `lines.txt` or `1.sh`, so that `2.sh` receives only two arguments:

* **`a/b`**
* **`c/d e/f`**

?

Answer: 
Set the IFS (internal field separator) to a newline:

```
$ 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=

```
If your input file contains the line `'c/d e/f'` and you want to process the item `c/d e/f` (without the quotes), then you may be looking for [`xargs`](http://pubs.opengroup.org/onlinepubs/009695399/utilities/xargs.html). Its input format is a space-separated list of strings, with the characters `'` and `"` delimiting literal strings. Also, `\` makes the next character be interpreted literally, but only outside a string. For example, here's an input file:

```
how\'dy 'hello world' aaa\
bbb

```

The items in this file are `how'dy`, `hello world` and `aaa␤bbb` (where `␤` is a newline character).