Bashで複数行の入力を読み取る方法

Bashで複数行の入力を読み取る方法

このスクリプトがあります。

#!/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入力する必要があります。\\

関連:

おすすめ記事