ど素人から毛を生やす。<延>

作成したshファイルを実行したら、出力ファイル名が文字化けした件

Web > Other 2025年12月19日(最終更新:0日前)

どもです。
普段の業務では作る機会のなかった、shファイルというものを初めて作ることになりました。

内容は、DB1をmysqldump→DB2に展開 するだけのシンプルなもの。
それぞれを単独で実行した結果も確認済み。なのでもちろん無事にDB2にDB1の内容が展開されました。

…と思いきや。

dumpしたファイル名がおかしいことになっています。
明らかに文字化け。半角英数字しか使ってないのに文字化け…??

ggってみてもクリティカルな話がなく困っていたのですが、それらしい情報に辿り着けました。

ツールの作成方法は、通常のツールと変わりません。 ただし、改行コードを必ずLFに設定してください。
mi Help シェルスクリプト機能について

改行コード!これは気にしていなかった。

基本業務はwindows使用なこともあり、テキストエディタの標準改行コードはCRLFになっていました。
これをLFに変更して再実行したところ、指示した通りのファイル名でdumpが出力されました。

どうして文字化けして、どうして展開に成功していた?

具体的なshファイルの中身が、こちら。

mysqldump --login-path=***** ***** --no-tablespaces > dump.dmp↲
mysql --login-path=***** ***** < dump.dmp↲

両方のコマンドで、末尾がdumpしたファイル名です。
かつ、展開の後に改行を入れている。

つまり、mysqldumpしたファイル名が「dump.dmpCR」となり文字化け。
一方で展開側のファイル名指定も「dump.dmpCR」となっていたわけです。
いわば偶然の一致により、ファイル名の整合性が保たれていたんですね。なんともはや。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)