このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

FTPコマンド このメッセージに返信する
日時: 2010/06/11 17:37
名前:
URL:
FTPコマンドが実行できません
なぜでしょうか?
[syntax error: unexpected end of file]がでます。
宜しくお願いします。


ftp -nv ${FTP_SERV} <<_FTP_CMD_
user ${FTP_ACCT} ${FTP_PASS}
prompt
cd ${DNAME05}
lcd ${BASEDIR}
mdel ${FNAME01} ${FNAME13}
mput ${FNAME01} ${FNAME13}
mkd ${DNAME01}
ls
cd ${DNAME01}
lcd ${BASEDIR}/${DNAME01}
mdel *
mput *
mkd ${DNAME06}
mkd ${DNAME07}
mkd ${DNAME08}
mkd ${DNAME09}
mkd ${DNAME10}
mkd ${DNAME11}
ls
bye
_FTP_CMD_
echo -e "done!"
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/11 19:24
名前: てふ
URL:
そのスクリプトの改行コードをチェックしてみては
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/11 21:01
名前:
URL:
改行コードは
CR+LFになってます
宜しくお願いします。
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/11 23:43
名前:
URL:
追加です。

単体で動かすと、動作したのですが、
case文の中に組み込むと動かなくなります。
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/13 07:59
名前: てふ
URL:
unix/linuxの改行コードはCR+LFじゃないですよ。だから動かないのです
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/13 09:22
名前: stranger
URL: http://ja.528p.com/
>unix/linuxの改行コードはCR+LFじゃないですよ。だから動かないのです

環境が、サーバがCentOSであることぐらいしかわからないので
なんともいえない

windowsでlinuxのshellスクリプトが動くとは思っていないと思うけど
クライアントがwindowsでwindowsでshellスクリプトを書いたのなら
CR+LFになるでしょうからftpでアップロードするときにASCIIモードをつかう

CentOSのマシンで
cat -v スクリプト名
で行末に^Mがついていればwindowsのフォーマットのままです
dos2unix や nkf でlinuxフォーマットに変換しましょう

shellスクリプト自体のケアレスミスについては解かりません

"サブグループの削除" の件と同じ方ですか
問題が解決したら "済" にしておいてね

記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/13 20:07
名前:
URL:
シェルスクリプトはFTPでサーバーに転送しています。

cat -v スクリプト名を実行すると
^Mがついてました。
しかしながら
nkf で変換してもダメでした。

先のコメントでも書きましたが、
このスクリプト単体では動作します。
(同じFTPで転送しています。)

FTP単体のもの
#!/bin/bash
ftp -nv ${FTP_SERV} <<_FTP_CMD_
user ${FTP_ACCT} ${FTP_PASS}
prompt
cd ${DNAME05}
lcd ${BASEDIR}
mdel ${FNAME01} ${FNAME13}
mput ${FNAME01} ${FNAME13}
mkd ${DNAME01}
ls
cd ${DNAME01}
lcd ${BASEDIR}/${DNAME01}
mdel *
mput *
mkd ${DNAME06}
mkd ${DNAME07}
mkd ${DNAME08}
mkd ${DNAME09}
mkd ${DNAME10}
mkd ${DNAME11}
ls
bye
_FTP_CMD_
echo -e "done!"


正常に動作しているスクリプトの
case文の中にこのスクリプトを組み込むとエラーとなります。

"--ftp" )
ftp -nv ${FTP_SERV} <<_FTP_CMD_
user ${FTP_ACCT} ${FTP_PASS}
prompt
cd ${DNAME05}
lcd ${BASEDIR}
mdel ${FNAME01} ${FNAME13}
mput ${FNAME01} ${FNAME13}
mkd ${DNAME01}
ls
cd ${DNAME01}
lcd ${BASEDIR}/${DNAME01}
mdel *
mput *
mkd ${DNAME06}
mkd ${DNAME07}
mkd ${DNAME08}
mkd ${DNAME09}
mkd ${DNAME10}
mkd ${DNAME11}
ls
bye
_FTP_CMD_
echo -e "done!"
break;;


またサブグループの件ですが、
色々と試行錯誤してますが、まだ解決には至ってないです。
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/14 08:31
名前: stranger
URL: http://ja.528p.com/
"FTP単体のもの"も^Mが付いていて実行できるのですか

case文ではbreakを使わないと思うけど
このcase文は
while do done に挟まれているのですか
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/14 15:53
名前:
URL:
FTP単体のも^Mがついてます。

良くみると日本語で書かれたコメント部分についていて
正常に動作しているほうも、コメント部分だけが^Mがついてます。

プログラム自体は、ついてないです。

このcase文には
while文で囲まれています。


case文とFTPコマンドは、何か因果関係があるのでしょうか
記事編集 編集
Re: FTPコマンド このメッセージに返信する
日時: 2010/06/14 16:18
名前: stranger
URL: http://ja.528p.com/
あなたのスクリプトの中身はあなたしか解かっていないので
禅問答になっていますね

echo -e "done!"
;; ← case文の--ftp)の実行文が終了してないのでは?
break;;

わたしはここまで、悪しからず

記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -