
このスクリプトがあります。
#!/usr/bin/env bash
main() {
while true; do
read -r -ep "> " input
history -s "$input"
echo "$input"
done
}
main
これは単一行文字列に適しています。
これで、ユーザーが次のように複数行の文字列を入力できるようにしたいと思います。
> foo \
> bar
foobar
この機能を許可するには、読み取りコマンドをどのように変更する必要がありますか?
答え1
あなたは明示的に障害を負うバックスラッシュの特別な処理-r
。
-r
呼び出しからそれを削除すると、read
エスケープされた改行を使用して入力を読み取ることができます。
$ read input
hello \
> world
$ echo "$input"
hello world
これを使用したときに発生する状況と比較します-r
(例:通常今何してるの?):
$ read -r input
hello \
$ echo "$input"
hello \
それ以外の場合は、単一のバックスラッシュを読むために-r
入力する必要があります。\\
関連: