2016-08-18 33 views
0

我有一个使用端到端的传输字符作为IFS Bourne shell脚本:结束传输字符作为IFS

ASCII_EOT=`echo -e '\004'` 
while IFS="$ASCII_EOT" read DEST PASSWORD; do 
    ... 
done 

怎样的EOT表现为一个IFS?或者read期望什么样的输入?

+0

您确定它是Bourne shell脚本吗? 'echo -e'意味着你使用'bash'或者外部的GNU'echo'二进制文件,在这种情况下,假设你可以使用'bash'来代替。 – chepner

回答

1

它是一个ASCII字符,就像,;它只是不可打印。

$ printf 'foo\004bar' > tmp.txt 
$ hexdump -C tmp.txt 
00000000 66 6f 6f 04 62 61 72 0a       |foo.bar.| 
00000008 
$ IFS=$(printf '\004') read f1 f2 < tmp.txt 
$ echo "$f1" 
foo 
$ echo "$f2" 
bar