これを試してください...というファイルを作成しますbash-is-odd.sh
。
#!/bin/bash
echo "echo yes i do odd things" >> bash-is-odd.sh
これは、bashが実際にスクリプトを「そのまま」解釈していることを示しています。実際、実行時間の長いスクリプトを編集すると、ランダムな文字が挿入されるなど、予期しない結果が生じます。なぜですか?bashは最後のバイト位置から読み取るため、編集すると現在読み取られている文字の位置がシフトします。
つまり、バッシュはこの「機能」のため、非常に安全ではありません。svnとrsync
bashスクリプトで使用すると、デフォルトで結果を「マージ」するので特に厄介です。rsync
これを修正するモードがあります。svnとgitにはありません。
解決策を提示します。というファイルを作成します/bin/bashx
。
#!/bin/bash
source "$1"
今すぐ#!/bin/bashx
あなたのスクリプトで使用し、常にのbashx
代わりにそれらを実行してくださいbash
。これは、問題を修正-あなたが安全にできるrsync
スクリプトを。
@ AF7によって提案/テストされた代替(インライン)ソリューション:
{
# your script
}
exit $?
中括弧は編集から保護し、終了は追加から保護します。もちろん、bashに-w
(ファイル全体)のようなオプション、またはこれを実行するオプションが付属していれば、私たち全員がはるかに良くなるでしょう。