0

GNU bash、バージョン 4.3.42(1) リリース

null 文字を区別しようとしていますが、bash は null 文字を変数に保持していないようです。

$ echo -e 'hello\0goodbye' > testlist
$ cat testlist | cut -d '' -f1
hello
$ foobar=$(echo -e 'hello\0goodbye'); echo "$foobar" | cut -d '' -f1
hellogoodbye

私が間違っていることはありますか?

4

1 に答える 1

1

Bashバイナリ ゼロを埋め込みます。

echo -e 'hello\0goodbye' | od -xc

与えます:

0000000      6568    6c6c    006f    6f67    646f    7962    0a65        
       h   e   l   l   o  \0   g   o   o   d   b   y   e  \n  

個人的には\x00表記の方が好きですが。

問題となっているcutプログラムです。awkそのため、代わりに言語を使用できます。例えば:

awk -F '\0'  '{print $1}' testlist

(注:cat不要)および:

foobar='hello\0goodbye'
echo -e "$foobar" | awk -F '\0'  '{print $1}'

両方が与える:

hello

ただし、\0空の文字列に展開されます ( に記載されているman bashように) 。

foobar=$(echo -e 'hello\0goodbye')

あなたが見つけたように、ヌルを失います。

于 2016-11-24T08:17:34.813 に答える