次のコマンドはほぼ同じようです。
read varname
varname=$(head -1)
varname=$(sed 1q)
read
1つの違いは、whileとareが組み込みシェルではないことです。head
sed
それ以外にも三人の行動に違いはありますか?
私の動機は、シェルと主なユーティリティ(たとえばhead,sed
、usingをhead
簡単に置き換えることができる場合は、read
なぜread
組み込み関数として存在するのですか?)をよりよく理解することです。
ベストアンサー1
効率性や内蔵性が最大の違いではありません。特定の入力の場合、すべて異なる出力を返します。
head -n1
末尾の改行は、入力に改行がある場合にのみ提供されます。sed 1q
末尾の改行文字は常に提供されますが、そうでなければ入力は保持されます。read
末尾の改行は提供されず、バックスラッシュシーケンスが解釈されます。
また、read
分割、タイムアウト、入力履歴などの他のオプションがあり、その一部は標準で、他の部分はシェルによって異なります。