4

私は非常に単純なシェルスクリプトを持っています

#!/bin/bash    
cp -rf /var/www/ksite/app2/* /var/www/ksite/app
echo "----"
echo "done"

しかし、cpコマンドが失敗したようです

私が実行する場合

cp -rf /var/www/ksite/app2/* /var/www/ksite/app

端末からすべて正常に動作します。誰かがシェルスクリプトに cp を含める方法を教えてもらえますか?

ありがとう

4

5 に答える 5

7

このスクリプトがどのように失敗するかについては、疑問があるようです。エラー メッセージが表示されない場合、これは異常です。私は提案します:

  1. コマンドライン(動作します)で、which cp
  2. 返信が何であれ、それをコピーしcpてスクリプトで使用します (例: /bin/cp)
  3. ウィドカードの展開を確認し、スクリプトを実行して、bash -x script-name期待どおりになるかどうかを確認してください。
  4. echo $?スクリプトのコピーの後-ゼロの場合、それは(考えて)機能しました。
  5. 誰かがシンボリック リンクを設定したのではないls -ld /var/www/ksite/appでしょうか?
  6. それでも失敗する場合は、コマンドラインからスクリプトを入手して、それが機能するかどうかを確認します. script-name
  7. コピーが実際に失敗したことを再確認してください。(たぶんそれはステップ1であるべきです。)
于 2012-07-04T13:00:33.920 に答える
2

で本当にbashを持っていることを確認してください/bin/bash。私はバッターハッシュバンは次のとおりだと思います:

#!/usr/bin/env bash

これは、envコマンドを使用してbashバイナリを検索し、環境を設定します。

于 2012-07-04T12:16:22.243 に答える
0

すべてのベースをカバーするだけです..パーミッションは実行間で異なりますか..つまり、sudo / root権限で1つを実行し、もう1つはユーザーとして実行しますか(可能性は低いですが、正確なエラーがわからないので尋ねたいと思いましたは)

于 2012-07-04T14:52:15.567 に答える
0

スクリプトが Windows で作成された Vladmir と同様の問題。Linux 環境で VIM を使用して新しいファイル「my_bash_script.sh」を作成し、スクリプトの内容をファイルに読み込みました。

:r file_made_in_windows.sh

次に、保存して閉じ、ファイルを実行可能ファイルとして設定します。

chmod 744 my_bash_script.sh

そこから、スクリプトを実行しました。

./my_bash_script.sh

...そしてそれはうまくいきました。なんて奇妙な問題でしょう。私は一瞬戸惑いました。

于 2021-06-21T07:22:49.913 に答える