2016-07-11 6 views
2

私のMacの場合、この次のコードをBatchからBashに変換するための助けが必要です。だから、bashと同等の、Mac端末用のバッシュ

*user* 
*password* 
cd /files/ 
put "C:\Users\*username*\Pictures\image.jpg" 

:バッチファイルで

:FTP.txtファイルで

ftp -s:FTP.txt ftp.example.com 

それはftpサーバに置くために自分のコンピュータからファイルを取得するだけのシンプルなプログラムです私は数時間の研究の助けを借りてほぼ同等のものを手に入れましたが、まだ助けが必要です:

#!/bin/sh 
HOST='ftp.example.com' 
USER='*user*' 
PASS='*password*' 
FILE='/Users/*username*/Desktop/image.jpg' 

ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASS 
cd /files/ 
put $FILE 
quit 
END_SCRIPT 

Thただ、かなりの仕事は、それがログインすると、現在のディレクトリを変更しますが、言っていないされています

local: /Users/*username*/Desktop/image.jpg remote: /Users/*username*/Desktop/image.jpg 
Can't open that file: No such file or directory. 

は、その後ログアウトに進みます。私はディレクトリパスをチェックして、それは完全にうまくいって、別のターミナルを開き、cd/Users/ユーザ名 /Desktop/image.jpgを実行しても動作します。

ご協力いただきありがとうございます。

+0

'$ USER'変数を'/Users/$ USER/Desktop/image.jpg'としてみてください – Inian

+0

それはどういう意味ですか?それは私には意味がありません...あなたはコードスニペットを送ることができますか? –

+0

'FILE'を' FILE = '/ Users/$ USER/Desktop/image.jpg'として定義しようとします。 – Inian

答えて

1

問題は、あなたが行うときということです:

put /Users/*username*/Desktop/image.jpg 

/Users/*username*/Desktop/image.jpg 

と呼ばれるサーバー上のファイルを作成しようとしているだけに、あなたのFTPサーバー上/Users/.../Desktopと呼ばれる全くディレクトリはおそらくありませんそれを置くとパス自体が作成されません。

あなたが実際に行うに必要なもの、このように、アップロードしたファイルを格納したいサーバー上のファイルの名前を追加します:

put /Users/*username*/Desktop/image.jpg NEW.jpg 

また、あなたは、変数を引用する必要があるので、あなたたい:

ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASS 
cd /files/ 
put "$FILE" NEW.jpg 
quit 
END_SCRIPT 

はまた、あなたが最初にローカルディレクトリを変更することにより、FTPサーバーへの完全パスを渡して回避することができますので、あなたはどうなる:

ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASS 
cd /files/ 
lcd "$USER/Desktop" 
put image.jpg 
quit 
END_SCRIPT 
+0

うーん、ありがとう!今しよう。しかし、私がアップロードしているファイルの「名前」は、ディレクトリ内のファイルと同じ名前になる可能性がありますか?編集: 'put /Users/*username*/Desktop/image.jpg image.jpg' –

+0

これは最後の例がします。 –

関連する問題