私はbash
のread
組み込みを使って一度に1文字ずつ読むことを試みています。これは実際には引数をread
に使用すると完璧に機能しますが、OSXユーザーの中にはbashにそのオプションがないという報告がありました。bashは謎を読む: `read -d '-s -n 1はハイフンを食べる
だから今、私はの線に沿って何か使用しています:このエコーの背中時間除くでfilename
1内のすべての文字、不思議な、ハイフン(-
)を
$ while IFS= read -r -d'' -s -n 1 char; do echo -n "${char}"; done < filename
を。例えば。私は
$ cat blah
uh-oh
を持っている場合、結果は次のとおりです。ドキュメントの
$ while IFS= read -r -d'' -s -n 1 char; do echo -n "${char}"; done < blah
uhoh
何もこのことを示すだろう何も言いません。 echo
の${char}
を${#char}
に置き換えると、0
がハイフンを読み取るはずです。それはちょうど完全に食べられます。
私は-d''
をドロップする場合は、代わりに改行を食べるが、改行はデフォルトの区切り文字であるため、少なくとも理にかなっているように、は、ハイフンを食べていません。 -d''
がハイフンを区切り文字として扱っているようなものです。
FWIW私は
$ bash --version
GNU bash, version 4.3.42(4)-release (x86_64-unknown-cygwin)
を持っているが、これは最初のOSXのユーザーが私に報告されました。
へのセットは '代わりに(非標準)'エコー-n "$炭" 'のprintfの%sは "$の文字を"'使用区切り文字... – anishsane
は 'printfのを使用しています'echo -n'よりも移植性がありますか? – Iguananaut
はい。 POSIX 'echo'は' -n'の標準を指定していません。 – anishsane