Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有mac终端的bash批处理等效_Bash_Macos_Batch File_Ftp - Fatal编程技术网

带有mac终端的bash批处理等效

带有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='

我需要一些帮助,将下面的代码从批处理转换为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.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