🐕
【Shell】練習用の模擬インストーラー
📕 概要
・installツールもどき
🐍 この記事を書いたきっかけというか流れ
1 Shellで動くインストール作業をPythonで自動化したい!!!
↓
2 インストール時の標準出力を解析し、あらかじめ登録した情報を自動入力するアイデアが浮上
↓
3 そのアイデアを試す練習用ツールが必要だった
↓
4 やってみよう
🔣 サンプルコード
#!/bin/bash
# スクリプトの開始メッセージ
echo "=== 勉強用シェルスクリプト ==="
# 1回目の質問: 利用規約の同意
read -p "利用規約に同意しますか? (yes/no): " agreement
agreement=$(echo "$agreement" | tr '[:upper:]' '[:lower:]') # 入力を小文字に変換して比較を簡単にする
if [[ "$agreement" != "yes" && "$agreement" != "y" ]]; then
# yes または y 以外の入力があった場合は終了
echo "利用規約に同意しない場合は利用できません。"
exit 1
fi
# 同意した場合のメッセージ
echo "利用規約に同意しました。"
# 2回目の質問: インストール先の指定
read -p "インストール先のパスを指定してください: " install_path
if [ -z "$install_path" ] || [[ "$install_path" != /* ]]; then
# 入力が空、または絶対パスでない場合はエラー終了
echo "不正なパスです。絶対パスを指定してください。"
exit 1
fi
# 指定されたフォルダが存在しない場合は自動作成
if [ ! -d "$install_path" ]; then
echo "指定されたフォルダが存在しません。自動作成します。"
mkdir -p "$install_path" || { echo "フォルダの作成に失敗しました。"; exit 1; }
fi
# インストール先の確認メッセージ
echo "インストール先のパス: $install_path"
# 3回目の質問: 確認
echo "今までの質問内容のおさらい:"
echo "利用規約の同意: はい" # 利用規約に同意したことを表示
echo "インストール先のパス: $install_path" # 指定されたインストール先を表示
read -p "上記の内容で正しいですか? (yes/no): " confirmation
confirmation=$(echo "$confirmation" | tr '[:upper:]' '[:lower:]') # 入力を小文字に変換して比較を簡単にする
if [[ "$confirmation" != "yes" && "$confirmation" != "y" ]]; then
# yes または y 以外の入力があった場合は終了
echo "設定が確認されませんでした。終了します。"
exit 1
fi
# 処理の実行
echo "設定を確認しました。処理を実行します。"
# 指定されたフォルダ内に 'install_test.txt' を作成し、内容として「インストール成功!!」を記述
echo "インストール成功!!" > "$install_path/install_test.txt" || { echo "ファイル作成に失敗しました。"; exit 1; }
echo "インストール先に 'install_test.txt' を作成しました。"
# スクリプトの終了メッセージ
echo "スクリプトを終了します。"
🧪 実行例
$ sh stdrr.sh
=== 勉強用シェルスクリプト ===
利用規約に同意しますか? (yes/no): y
利用規約に同意しました。
インストール先のパスを指定してください: /tmp/sample
インストール先のパス: /tmp/sample
今までの質問内容のおさらい:
利用規約の同意: はい
インストール先のパス: /tmp/sample
上記の内容で正しいですか? (yes/no): yes
設定を確認しました。処理を実行します。
インストール先に 'install_test.txt' を作成しました。
スクリプトを終了します。
$
$
$ cat /tmp/sample/install_test.txt
インストール成功!!
🧵 補足
特になし
Discussion