0

次のスクリプトがあります。

#!/bin/bash        
PATH=...
echo 'Syncing database dumps'
rsync ssh user@XX.XXX.XXX.XX:/test/ /test
echo 'Creating symlink'
ln -s test /tmp/test

最初のコマンドとすべてのエコーのみが実行されます。最初のコマンドをコメントアウトすると、symlink コマンドが実行されます。

#!/bin/bash        
PATH=...
echo 'Syncing database dumps'
#rsync ssh user@XX.XXX.XXX.XX:/test/ /test
echo 'Creating symlink'
ln -s /test /tmp/test

残りは実行されません。理由はありますか?

最近のコメントに基づいて編集し、symlink コマンドに -v オプションを追加しました。これで、すべてのコマンドが実行されることがわかります。ただし、設定された順序で実行されるわけではありません。symlink コマンドは、rsync コマンドが完了する前に実行されます。rsync コマンドが終了した後にのみ symlink コマンドが実行されるように、順序を設定するにはどうすればよいですか?

4

1 に答える 1

2

rsync の --blocking-io オプションを試してください。

rsync ssh --blocking-io user@XX.XXX.XXX.XX:/test/ /test

または、プロトコルがとにかくsshの場合、scpを使用できます

scp user@XX.XXX.XXX.XX:/test/ /test
于 2012-12-02T12:03:00.660 に答える