- ベストアンサー
Windowsで作成したShell
Windows環境(sakura)で作成したShellScriptをALFTPでLinuxに転送して 実行すると変数などがうまく認識されていませんでした。 普通はそうなのかもしれませんが、Shellに触るのが初めてなのでそれが原因なのか わかりません。 コマンドラインで実行すると問題なく動くのにそれをScriptにすると実行できないので Sh -xで調べました... エミュレータはTeraTermを使用していて言語設定はEnglishで実行しています。 どなたか原因のわかる方はいらっしゃいますか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> scriptファイルに同じコマンドをそのまま書いてもCommand not foundとでて認識されません その前後はどんなメッセージになってますか? script: Command not found SSH: Command not found (前後逆の場合もありますが)のどちらでしょう? 前者なら、 ・scriptに実行属性がない →chmodで実行属性を追加する または→ sh script と、実行するシェルを指定する ・PATH上にscriptがない → PATHの通ったところに script を置く(今回の場合はあまり推奨はしない) または→ PATHに . (カレントディレクリ)を追加する(推奨しない) または→ 「 ./script 」のようにディレクトリを付けて、相対または絶対パスで指定する。 としないと実行できません。 また、もし、その書かれたscriptがそのままだとしたら > SSH $SFTP_UID と > ssh user@IP とは一致しません。$SFTP_UIDが展開されてuser@IPになったとしても一致しません Linuxではファイル名やコマンド、コマンドラインのオプションの大文字小文字は区別されます。 SSH は ssh ではありません。 ・実行権の無いファイルは直接実行できない。(たとえ .sh とか .exe とか付いていても) ・PATH上に無いファイルはコマンドとして認識されない。カレントディレクリも例外ではない。 ・大文字小文字は区別される。 dir -w と DIR -W とはコマンドもオプションもまったく別のものと解釈される。 と言う点がWindowsのコマンドプロンプトと大きく異なる点です。 # というか、共通点はほとんど無いと思っておいた方が無難です。 注意してください。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
#1 でも言われてるけど, これで「原因のわかる」人などほとんどいないはず. 超能力があれば答えられるかもしれんが, 一般に「超能力者」は (いたとしても) ごく少数であると思われる. たとえば「うまく認識されていない」というのが*どう*「うまく認識されていない」のか, この文章だけから読み取れますか? 機密に触れない範囲で ・どんなスクリプトなのか ・どのように転送したのか (「ALFTP で転送した」では問題外. 最低限「どのような設定なのか」を書くこと) ・「コマンドラインで実行する」とは何をどう実行したのか ・スクリプトで「実行できない」というのは具体的にはどのようなことが起きたのか (エラーメッセージが出ているならそのエラーメッセージを書く, 想定した結果と違う結果になっているなら「どのような結果を想定したのか」「実際の結果はどうであったのか」を書く) くらいは書いてください. もちろんこれらのことは機密だから書けない, ということでも構いませんが, もしそうなら「誰にもこたえてもらえないので自力でなんとかする」くらいの気構えは持ってください.
補足
たとえば、直接コマンド次のコマンドを実行します。 ssh user@IP これだと正常につながるのですが、 scriptファイルにに同じコマンドをそのまま書いてもCommand not foundとでて認識されません。 viコマンドを使用して作成したファイルでも実行できませんでした。 <script> #!/bin/sh SFTP_UID='user@IP' SSH $SFTP_UID よろしくお願いします。
- kmee
- ベストアンサー率55% (1857/3366)
どんな環境でどんなエディタで作ろうが、正しく作って正しく転送して正しく実行すれば、作った通りに動作します。 # 「思った通り」じゃないのがつらいところ 何をやろうとしたか、どんなエラーになったか、sh -x で実行した結果はどうだったのか そういう情報が無いと正確な原因はわかりません
お礼
詳しいご回答ありがとうございます。 今後の参考にさせていただきます。