背景
拙著「ExcelマクロをWSL2 x Githubで管理する」参照。
ExcelVBAのソースコードを管理するため、Ubuntu on WSLからWin環境でフォルダ操作しました。
恐怖のコード
注!:絶対に実行しないでください。
# Cドライブのユーザフォルダのパスを取得
userFolderPath="`cmd.exe /c echo %USERPROFILE% | sed 's/\r//g'`"
# ユーザフォルダ名を取得
userFolderName=${userFolderPath##*\\}
# リポジトリのパスを取得
repoPath="`pwd`"
# リポジトリ名を取得
repoName=${repoPath##*/}
# Cドライブのデスクトップにリポジトリをディレクトリごとコピーする時のパス
↓ {repositoryName}は間違い!!!{repoName}が正しい!!!
copyToPath="/mnt/c/Users/${userFolderName}/Desktop/${repositoryName}"
# Cドライブのデスクトップにリポジトリをディレクトリごとコピー
cp -rf ../$repoName $copyToPath
(中略)
# Cドライブのデスクトップにコピーしたリポジトリをディレクトリごと削除
rm -rf $copyToPath
解説
変数としてrepositoryName
は定義されていない。。。
→${repositoryName} = (空)
→copyToPath="/mnt/c/Users/${userFolderName}/Desktop/
。。。
→copyToPath
にリポジトリ内の各種フォルダ・ファイルをコピー
→(中略)
→copyToPath
を削除www
2022/10/20 追記
@hkcomori 様より
set -u
を活用することで未定義変数を使用した場合は
エラーになるよう設定できることをご教示いただきました。
参考URL:https://kiririmode.hatenablog.jp/entry/20200822/1598070443
ありがとうございます!
その後
夜10時。血の気が引いていくのを感じました。
デスクトップにあった社内共有フォルダのショートカット先は無事でした。
神に感謝しました。
ただデスクトップ自体を消したわけですから、フォルダ作成も何もできなくなりました。
上司に泣きついたところ、「一旦はサインアウトしてみたら?」ということでした。
サインインしなおし結果、無事にデスクトップ「は」復活していました!
デスクトップ下にあったフォルダ・ファイルは戻せませんでしたwww
サヨウナラ、我が努力の結晶たちよ。。。
教訓
・set -u
は至高。(こちらのQiita記事が参考になります)
・rm -rf
は鬼。使う際は本当に気をつけてください。
・ShellScriptは超クール。宣言されていない変数があっても何のその、処理は進みます。
・頼れる上司は神。日頃から良好な関係を築いていれば、いつかきっと救われます。
・なるべく社内共有フォルダ上で作業しましょう。
・保険としてOneDriveとかでバックアップをとっておくと吉。
・やっちまった系は話のネタになる。