シェルスクリプトを覚えるのは一時の苦労、一生のラク
2023.1.5追記「ダブルクォートの扱いを間違えておりました」
おばちゃんのコードを参考にするような奇特な方はいらっしゃらないと思いますが報告です。実行後、こちら(<?xml version="1.0" encoding="UTF-8"?>)のダブルクォートが無くなっていることに気づきました。シェルスクリプトは、ダブルクォート、シングルクォートの扱いが難しいです。調べて、シングルクォートで囲ってみたら(echo '<?xml version="1.0" encoding="UTF-8"?>')ダブルクォートが消えずに残っていました。ということで、コードを修正しました。
(以下、元記事)
おばちゃんにも若い時代はあった。
あの頃はHTMLタグをコピペして、中の文字だけ入れ替えることを100回繰り返しても全然平気だった。
なのに、今なんてパソコン画面のソースコードを凝視するだけで目が渇いて痛い。あまりにも痛いから、ドライアイ防止のために家にいる間はずっとMUJIのブルーライト対応サングラスをかけている。それでも、ツラい(老眼鏡はまだ作ってない)。
そこで、できるだけ手作業をしないためにシェルスクリプトで対処することにした。年寄りこそシェルスクリプト。
で、今回ご紹介するのは、おばちゃんが調べて書いたサイトマップ作成用シェルスクリプト。
え? プラグインとかあるのに、今どき手作業でサイトマップ作る人なんているのかって?
おばちゃんは今回、手作業で作った。若人もこれからの長い人生、一度はそんな機会が訪れるやも知れぬではないか。
ということで、↓こんな感じ(sitemap.sh)
前提:macOS Ventura(ver.13.0.1)上のzsh
# sitemap.sh
# 置換で配列を入れる時はダブルクォートを付けるらしい
# 文字のダブルクォートがあったらシングルクォートで囲む
#!/bin/zsh
urls=(
"https://example.com/archive/scones/"
"https://example.com/archive/cupcakes/"
"https://example.com/archive/mince-pies/"
"https://example.com/archive/clotted-cream/"
"https://example.com/"
)
echo '<?xml version="1.0" encoding="UTF-8"?>' >> sitemap.xml
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> sitemap.xml
for ((i=1; i<=${#urls[*]}; i++))
do
url=${urls[$i]}
echo -e "\
<url>\n\
<loc>$url</loc>\n\
<lastmod>2022-12-12</lastmod>\n\
</url>"
done >> sitemap.xml
echo "</urlset>" >> sitemap.xml
まあ、そもそもURLアドレスのリスト化することからして面倒くさいというか、そんな手間なことするぐらいなら他の方法にするとか、ツッコミどころは色々あるけど、今回のおばちゃんの場合、たまたまターミナルのファイル名一覧表示からリスト化できたという理由もある。
ちなみに、見やすくするために、\n\(改行)している。
コードの書き方は初心者なおばちゃんが理解できる範囲だから、シェルスクリプト初心者の方の、はじめの一歩になるんじゃないかな。
ちなみに、ちなみに、リスト化する時は(ドメイン名付けたり、ダブルクォートで囲ったり)テキストエディタで正規表現を使って置換した。
ファイル名一覧
scones
cupcakes
mince-pies
clotted-cream
検索 (.+)
置換 "https://example.com/archive/$1/"
これで、
zsh sitemap.sh
↓出来上がり(sitemap.xml)
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/archive/scones/</loc>
<lastmod>2022-12-12</lastmod>
</url>
<url>
<loc>https://example.com/archive/cupcakes/</loc>
<lastmod>2022-12-12</lastmod>
</url>
<url>
<loc>https://example.com/archive/mince-pies/</loc>
<lastmod>2022-12-12</lastmod>
</url>
<url>
<loc>https://example.com/archive/clotted-cream/</loc>
<lastmod>2022-12-12</lastmod>
</url>
<url>
<loc>https://example.com/</loc>
<lastmod>2022-12-12</lastmod>
</url>
</urlset>
無事にできた時はちょっと感動した。こういうところがコード書きの楽しいところでもあるよね。
これでリストが100行でも200行でも一瞬よ。ちょっと人生ラクになったわ。