带有mac终端的bash批处理等效
我需要一些帮助,将下面的代码从批处理转换为Mac的Bash。这只是一个简单的程序,可以从我的计算机获取文件,并将其放入ftp服务器: 在批处理文件中:带有mac终端的bash批处理等效,bash,macos,batch-file,ftp,Bash,Macos,Batch File,Ftp,我需要一些帮助,将下面的代码从批处理转换为Mac的Bash。这只是一个简单的程序,可以从我的计算机获取文件,并将其放入ftp服务器: 在批处理文件中: ftp -s:FTP.txt ftp.example.com 在FTP.txt文件中: *user* *password* cd /files/ put "C:\Users\*username*\Pictures\image.jpg" 因此,在几个小时的研究帮助下,我几乎得到了同等的帮助,但仍然需要一些帮助: #!/bin/sh HOST='
ftp -s:FTP.txt ftp.example.com
在FTP.txt文件中:
*user*
*password*
cd /files/
put "C:\Users\*username*\Pictures\image.jpg"
因此,在几个小时的研究帮助下,我几乎得到了同等的帮助,但仍然需要一些帮助:
#!/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
然后继续注销。我已经检查了目录路径,完全没问题,我甚至可以打开另一个终端,然后做cd/Users/username/Desktop/image.jpg,它就可以工作了
感谢您的帮助。问题在于,当您这样做时:
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-n$HOST尝试将$USER
变量用作/Users/$USER/Desktop/image.jpg
这是什么意思?这对我来说没有意义。。。能否发送代码段?请尝试将FILE
定义为FILE='/Users/$USER/Desktop/image.jpg'
$USER是FTP服务器的用户名,而不是我的计算机名。我刚刚删除了用户名,它实际上是FILE='/Users/Sean/Desktop/image.jpg'Hmm,谢谢!我现在就试试。但我上传的文件的“名称”是否与目录中的文件同名?编辑:例如,put/Users/*username*/Desktop/image.jpg image.jpg
上一个示例就是这样做的。
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASS
cd /files/
put "$FILE" NEW.jpg
quit
END_SCRIPT
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASS
cd /files/
lcd "$USER/Desktop"
put image.jpg
quit
END_SCRIPT