【问题标题】:How do I use a variable in an FTP shell script?如何在 FTP shell 脚本中使用变量?
【发布时间】:2011-02-22 20:31:05
【问题描述】:

使用我为 FTP-ing 找到的一个方便的脚本,我将其修改为我自己的用途,它可以工作,但效果太好了,或者说太字面意思了。

#!/bin/sh

HOST='10.0.1.110'
USER='myName'
PASSWD='myPass'
FILE='*.sql' # WILDCARD NOT WORKING - Takes literal string of '*.sql'

# Stripped unrelated code

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
prompt
binary
cd Desktop/SweepToDiskBK
mput /home/myAcct/SQLbackups/"$FILE" "$FILE"
quit
END_SCRIPT
exit

也就是说,获得 'put' 的文件被命名为 *.sql,并替换它的任何先前版本,而不是 file1.sqlfile2.sql 等。在原始脚本中,它们是执行put,而不是mput,并使用单个文件名text.txt。我还尝试将FILE 之后的单引号更改为双引号,并得到相同的结果。有人可以让我了解使用变量进行 CLI FTP-ing 的“技巧”吗?

提前致谢, 罗

【问题讨论】:

    标签: shell scripting command-line ftp


    【解决方案1】:

    我会试试这个:

    FILE=*.sql
    

    没有任何引号启用通配符扩展 和:

    mput /home/myAcct/SQLbackups/"$FILE"
    

    只有一个 $FILE

    【讨论】:

    • 第一部分没有引号,但我必须有两个"$FILE"s 才能使它工作。谢谢!
    【解决方案2】:

    但我认为您可以将mput /home/myAcct/SQLbackups/$FILE 改为mput *.sql?或者,如果您需要使用 put 放置多个文件,那么您需要使用某种循环一个一个地完成。

    要检查脚本的作用,请将ftp -n $HOST 更改为cat。在普通的 ftp 会话中尝试这些命令。它们有效吗?

    【讨论】:

      猜你喜欢
      • 2022-01-18
      相关资源
      最近更新 更多