1. ホーム
  2. bash

[解決済み] 端末の最終行を書き換える

2023-05-05 15:37:27

質問

私のbash-scriptは以下のようなものです。

echo "Description:"
while [ $finishInput -eq 0 ]; do
  read tmp
  desc="$desc"$'\n'"$tmp"
  if [ -z "$tmp" ]; then
    finishInput="1"
  fi
done
echo -n "Maintainer:"
read maintainer

空行が渡されるまで、desc varに読み込まれます。その後、他のものを読み込むようにしたい。

現在のスクリプトを実行すると、次のようになります。

Description:
Line 1
Line 2

Maintainer:

最後の空行を"Maintainer:"で上書きしたいのですが、どうすればいいですか?

解決策を探しましたが、以下のような提案しか見つかりませんでした。

echo -n "Old line"
echo -e "\r new line"

というようにすると、その行にとどまって上書きしてしまいます。私の場合、これは不可能です。

どのように解決するのですか?

あなたの例では、同じ行のテキストを削除しています。前の行に戻りたい場合は \e[1A で、その行を消去するときは \e[K :

echo 'Old line'
echo -e '\e[1A\e[Knew line'

行きたいときに N を並べたいときは \e[<N>A