こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

rcpで、気になるメッセージが出る

UNIX上で、ごくごく簡単なシェルスクリプトを作って、実行すると、結果はきちんと実行されるのですが、なぜか、command not foundが出てきます。

シェルは次のようなものです。
------------------------------
#!/bin/csh
`rcp -pr host2:/tmp/data /mydir`
------------------------------
結果は、きちんと、host2の/tmp/data以下が、ローカルマシンの/mydir以下にコピーされるのですが、なぜか、最後に次のメッセージが出てきます。
------------------------------
UX:csh:ERROR:: Command not found.
------------------------------

きちんと目的通り実行されているのに、なんで? と思って気になるのですが、これはいったい何のコマンドを実行しようとしているのか、それとも私のスクリプトでは、暗黙の何かが実行されてしまうのか、ご存じの方は教えて下さい。よろしくお願いします。

投稿日時 - 2003-10-02 14:42:07

QNo.669524

困ってます

質問者が選んだベストアンサー

コマンド文字列を逆引用符(バッククオート) でくくっているからでしょう。
逆引用符でくくると、その中身を実行した結果がもう一度使用されます。
この場合、裸で出てくるので、結果の文字列がもう一度実行されてしまいます。
rcp でリモートからのコピーを実行した結果の文字列(成功したのであれば、多分なにも出ないので空の文字列)がもう一度/bin/sh で実行されようとして、そんなコマンドがない、と言われて失敗しているのだと思います。
perl などでシェルコマンドを実行させる場合は`` で囲まないとそこをシェルで実行させることはできませんが、この場合はすでにシェルスクリプトとして起動されているので、コマンドを`` で囲む必要はありません。

投稿日時 - 2003-10-02 15:17:29

お礼

回答、どうもありがとうございます。
しっかりシェルスクリプトの勉強をしたことがないので、そんな仕組みになっていたとは知りませんでした。ご指摘の通り、perlでやっていたことをそのままシェルにしていました。勉強になりました。

投稿日時 - 2003-10-02 16:07:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問