アットウィキロゴ

他の方が作ってくださったスクリプトがこけるときに注意すること

他の方が作ってくれたスクリプトをダウンロードしてきて動かそうとして、こけることは結構ある。
特にログインシェルの設定をいじっていることで失敗するケースの対応メモ。

1. noclobberしてない?
僕の場合、ログインシェルのスクリプトを編集して使っているため、時々起こる事象。
set noclobber
を設定していると、リダイレクトで既存ファイルを上書きすることができなくなる。
つまり、
$ touch hoge.txt
$ echo yaemugura > hoge.txt
なんてやろうとしても
hoge.txt: File exists.
で失敗する。
これは自分で書いたスクリプトなら中身がわかっているので間違いづらいけど、
他の方が作ったスクリプトでは細部を把握していないので、場合によっては致命的になることがある。

この場合、>の代わりに>|を使ってあげることでリダイレクトが可能になる(bashなどでも同様)。
sed -i.bak -e 's/ > / >| /g' fuga.sh
とかでスクリプトの中身をガッツリ書き換える
(僕はやらかしが非常に多いので、こんな感じで、fuga.sh.bak名のバックアップを作るようにしている)。
或いは、スクリプトを一時的な用途でのみ使うのであればコンソールで
unset noclobber
としてあげても回避可能(こっちの方がいろいろミスが少なくて良いかもしれない)。

タグ:

+ タグ編集
  • タグ:
最終更新:2018年01月05日 21:13