Pageferry
ワークフロー

Bashスクリプトの実行:フォルダ開封から終了コードまで

03
スクリプトの実行

WSLまたはSSH経由で引数付きBashスクリプトを実行する

Bashスクリプトは3つの方法で起動できます。1つ目は「bash script.sh arg1 arg2」、2つ目は「chmod +x」後に「./script.sh」を実行する方法(シェバン行があるため機能します)、3つ目はシェルを置き換えるため戻ってこないexec組み込みコマンドを使用する方法です。最初の形式は、権限の変更が不要なため、最も簡単に開始できます。Shellは、PC上のWSLまたはSSH経由でアクセスする自分のLinuxシステムなど、選択した環境でコマンドを実行します。チャットのカードには、実際の出力と終了コードが表示されます。引数はあなたが決めるため、1つの会話で通常の場合と失敗した場合をテストできます。多くの人がどちらの形式を選ぶべきか尋ねますが、テスト中は「bash script.sh」を使用してください。これはファイルに実行権限がなくても機能します。スクリプトが完成し、シェバン行で始まるようになったら、「./script.sh」に切り替えてください。どちらの形式を使用しても、終了ステータスは同じ数(0〜255)であり、0は常にスクリプトが正常に終了したことを意味します。

01

フォルダを開く

スクリプトを含むフォルダを作業フォルダとして選択します。read_fileやgrepなどのファイルツールは、そのフォルダ内で動作します。ファイルツールはそのフォルダ内に限定されますが、Shell、Web、SSHは制限されません。

02

承認モードを選択する

Ask firstを使用して、変更を差分として確認するか、Plan onlyを使用してまず計画を読み取るかを選択します。Auto-runは即座に動作します。Ask firstは、何かを変更するアクションの前にのみ一時停止します。

03

実行を依頼する

実行内容を平易な言葉で説明します。例:「引数test付きでスクリプトを実行してください」。WSLとサーバーの両方がある場合は、どちらを使用するかを明記します。スクリプト名と引数を正確に指定してください。

04

結果を確認する

カードを開いて出力と実際の終了コードを確認し、編集を受け入れるか拒否するかを決定します。0以外の値は情報として扱われます。受け入れた編集ごとに再度実行してください。期待した結果と比較してください。

小さな例題スクリプト

greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
  echo "Usage: $0 NAME [COUNT]" >&2
  exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
  echo "Hello, $name ($i)"
done
exit 0

greet.shは、名前が省略されると使用法の行と終了コード2で停止し、オプションのcount引数を受け付け、デフォルト値は1です。ループ内で挨拶のみを出力します。実行前に一度ファイルを読んでください。sudoも、ダウンロードも、ファイルの移動や削除も含まれていないため、所有するどのマシンでも安全にテストできます。行ごとに説明すると:シェバン行がインタプリタを指定し、set -euはエラーや未定義変数で停止し、$#のテストは引数の数を数え、forループはechoのみを実行します。

4つの小さなステップでスクリプトを実行する

スクリプトファイルを作成する

空の作業フォルダから始めます。エージェントに上記の例題を書いてもらうよう依頼し、write_fileがそのフォルダにgreet.shを作成します。カードを開き、行ごとにファイルを読んでください。1行目はインタプリタを指定するシェバン行、set -euはエラーや未定義変数でスクリプトを停止し、$#のチェックは名前が省略された場合に備えて残りの処理を保護します。Ask firstモードでは、新しいファイルはあなたの承認後に書き込まれます。まだ何も実行されていません。このスクリプトの使用法分岐では、不正な使用時に2を選択します。これは一般的な慣習です。各行を理解したときにファイルを受け入れ、理解できない場合はエージェントに説明を依頼してください。拒否された編集では、フォルダは変更されません。

実行して終了コードを確認する

「bash スクリプト 実行」で検索する人は、通常「bash greet.sh test」という1行を求めています。エージェントに実行を依頼すると、Shellはチャットの環境(WSLなど)でコマンドを開始し、実際の出力と実際の終了コードを返します。カードを展開して完全な出力を確認してください。次に、引数なしで同じ実行を依頼すると、使用法の行と終了コード2が表示されるはずです。CLIアプリケーションの終了コードは、呼び出し元が読み取る0〜255の範囲の数値であり、0は成功を意味します。終了コード127はコマンドが見つからないことを、126はファイルを実行できないことを意味し、これらはタイプミス、プログラムの不足、または実行権限の不足を示唆します。

スクリプト内の引数を確認する

read_fileでスクリプトを表示し、grepで$1や$2が使用されている場所を検索することで、各引数にデフォルト値またはエラーメッセージがあるか確認できます。オプション引数の解析方法:スクリプトはgetoptsでループ処理し、1つまたは2つの値のみであれば、単純な$1や${2:-1}で十分です。引数付きのエイリアスは関数のように動作しません。エイリアスは入力された単語をテキストに置き換えるだけなので、値を途中に含める必要がある場合は関数を使用してください。エージェントに変更を依頼し(例:countのデフォルト値を変更)、edit_fileが表示する差分を読んでください。その後、スクリプトを再度実行し、新しい終了コードと古いコードを比較してください。Plan onlyモードでは、スクリプトが理解するパラメータを何も実行せずにリストできます。

所有するサーバーで同じスクリプトを実行する

同じ手順は、SSH経由でアクセスする所有するLinuxシステムを作業環境として使用する場合にも機能します。ファイルツールはチャットの作業フォルダ内で動作し続け、Shellコマンドは選択した環境で実行されるため、カードがどちらを参照しているか確認してください。「bash exec スクリプト」で検索されるexec組み込みコマンドは、シェルを別のコマンドで置き換え、戻らないため、その後に実行されるものはなく、終了コードは新しいコマンドのものが返されます。ファイルが移動または削除される前にスクリプトのコピーを保持し、echoでまずドライランを実行し、権限を与えられたマシンのみを使用してください。チャットを閉じる前に最終的なカードを読んでください。すべての値を別コマンドに渡す場合は、各値の形状を維持するために"$@"を二重引用符で記述してください。

Windows用のPageferry

自分のマシンでBashスクリプトをテストする

Pageferryをダウンロード ↗