1. ホーム
  2. bash

[解決済み] bashスクリプトを一行ずつ実行するには?

2022-09-25 03:04:57

質問

もし私が bash -x と入力すると、すべての行が表示されます。しかし、スクリプトは正常に実行されます。

どうすれば一行ずつ実行できるのでしょうか?

どうすれば一行ずつ実行できるのでしょうか。同じ効果を read を各行に入れることです。

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

everylineにreadを入れる必要はなく、bashスクリプトに以下のようなトラップを追加するだけで、例えば以下のように効果があります。

#!/usr/bin/env bash
set -x
trap read debug

< YOUR CODE HERE >

bash v4.2.8 と v3.2.25 でテストしたところ、動作しました。


改良版

スクリプトがファイルからコンテンツを読み込んでいる場合、上記のリストは機能しません。回避策としては、以下の例のようになります。

#!/usr/bin/env bash
echo "Press CTRL+C to proceed."
trap "pkill -f 'sleep 1h'" INT
trap "set +x ; sleep 1h ; set -x" DEBUG

< YOUR CODE HERE >

スクリプトを停止するには 他のシェルから終了させる をする必要があります。


アルタネイティブ1

もし、単にスクリプトの次のコマンドに進む前に数秒待ちたいだけなら、次の例が役に立つでしょう。

#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG

< YOUR CODE HERE >

trapコマンド内にset +xとset -xを追加して、出力が読みやすくなるようにしています。