を書いた。ChatGPTが。
目的とか
- 先日読んだt_wadaさんのように読書記録をリポジトリ管理したかった。
- だが、いちいちmkdirしてtouchしてって工程が面倒臭かったので、楽がしたかった。
- なんとなく出来そうだけど、具体的なコードが思いつかなかったのでChatGPTにぶん投げた。 それでいいのか俺...?
コード
#!/bin/zsh echo 'Enter the book title:' read book_title echo 'Enter the number of chapters:' read num_chapters # Replace spaces with underscores and make lowercase formatted_book_title=${book_title// /_} formatted_book_title=${formatted_book_title:l} # Create the book directory if it doesn't exist mkdir -p "$formatted_book_title" # Generate chapter files for ((i = 1; i <= num_chapters; i++)); do chapter_file="${formatted_book_title}/chapter_${i}.md" touch "$chapter_file" echo "Chapter $i: Reading Memo" > "$chapter_file" done echo "Created $num_chapters chapter files in the '$formatted_book_title' directory"
解説
read book_title
入力を待ち受けて変数に格納
formatted_book_title=${book_title// /_} formatted_book_title=${formatted_book_title:l}
formatted_book_title=${book_title// /_}
- book_title 変数内のすべてのスペースをアンダースコア(_)に置き換え
- ${variable//search/replace} という形式のパラメータ展開を使って、variable 内の search と一致するすべての部分文字列を replace に置き換え
- この場合、book_title 内のすべてのスペースがアンダースコアに置き換え
formatted_book_title=${formatted_book_title:l}
- この行では、formatted_book_title 変数内のすべての文字を小文字に変換
:l
という形式のパラメータ展開を使って、formatted_book_title 内のすべての大文字を小文字に変換
実行
- chmod +x create_book_memos.sh
- ./create_book_memos.sh
実行権限つけて動かすだけとも言うけど、一応。