您的腳本可以接受STDIN
的輸入嗎?也許使用read
。
如果你不能這樣做,你可以編碼你的空值,並逃避你的編碼。
E.G. 48656c6c6f0020576f726c64可以編碼爲48656c6c6f200102020576f726c64
這反過來,如果雙方都同意2020 = 20,2001年將再次解碼= 00
更新我覺得編碼是你必須做的,因爲我嘗試使用read
什麼,結果有點太難了。可能還有另一種選擇,但我還沒有看到它。
這裏是我的腳本和兩個測試流程:
dlamblin$ cat test.sh
echo "reading two lines of input, first line is length of second."
read len
read ans
echo "C string length of second line is:" ${#ans}
for ((c=0; c<$len; c++))
do
/bin/echo -n "${ans:$c:1},"
done
echo ' '
exit
dlamblin$ echo -e '12\0012Hello \0040World' | sh test.sh
reading two lines of input, first line is length of second.
C string length of second line is: 12
H,e,l,l,o, , ,W,o,r,l,d,
dlamblin$ echo -e '12\0012Hello \0000World' | sh test.sh
reading two lines of input, first line is length of second.
C string length of second line is: 5
H,e,l,l,o,,,,,,,,
#Octals \0000 \0012 \0040 are NUL NL and SP respectively
哦,我假設'fade.sh'是一個真正的'sh'腳本。因此,我用'sh'測試。顯然,ruby可以更好地讀取'stdin'中的字節。 – dlamblin 2009-10-18 19:42:43