Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
在bash脚本中定义wget的属性_Bash_Attributes_Wget - Fatal编程技术网

在bash脚本中定义wget的属性

在bash脚本中定义wget的属性,bash,attributes,wget,Bash,Attributes,Wget,我试图在程序开始时设置wget的属性,以便将它们用于所有wget实例 WGET_LOG_FILE=path/to/wget_log USER_AGENT='Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0x' WGET="wget -U $USER_AGENT -a $WGET_LOG_FILE --no-clobber --wait=2 --random-wait" $WGET www.webpage.co

我试图在程序开始时设置wget的属性,以便将它们用于所有wget实例

WGET_LOG_FILE=path/to/wget_log
USER_AGENT='Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0x'

WGET="wget -U $USER_AGENT -a $WGET_LOG_FILE --no-clobber --wait=2 --random-wait"

$WGET www.webpage.com
问题是它忽略了日志并将所有内容定向到输出,或者给出了一个错误“path/to/wget_log不存在”,因此我认为它也忽略了用户代理字符串

那么我做错了什么?我试过把“改成”或$()

奇怪的是,如果我在终端执行:

wget -U $USER_AGENT -a $WGET_LOG_FILE --no-clobber --wait=2 --random-wait www.webpage.com
它是有效的,所以我猜它是在一些子shell中执行的,这就是为什么它没有得到它

因此,问题是:

  • 如何在bash脚本中正确设置wget的属性
  • 如何检查wget是否使用指定的用户代理?只需wget任何用户代理检查网页,如:
  • 获取网页的2秒等待时间是否合适

  • 感谢

    一般来说,您不应该依赖于将参数扩展为要运行的命令的名称及其参数;它在简单情况下可以正常工作,但很快就会遇到问题。我无法准确解释您看到的错误(因为您没有引用
    $USER\u AGENT
    ,即使是第三个示例也能正常工作,我感到惊讶)

    由于您使用的是
    bash
    ,因此应该使用数组来保存参数,然后显式调用
    wget
    ,并展开数组以提供参数

    WGET_LOG_FILE=path/to/wget_log
    USER_AGENT='Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0x'
    
    wget_args=( "-U" "$USER_AGENT"
                "-a" "$WGET_LOG_FILE"
                "--no-clobber"
                "--wait=2"
                "--random-wait")
    
    wget "${wget_args[@]}" www.webpage.com
    

    一般来说,您不应该依赖于将参数扩展为要运行的命令的名称及其参数;它在简单情况下可以正常工作,但很快就会遇到问题。我无法准确解释您看到的错误(因为您没有引用
    $USER\u AGENT
    ,即使是第三个示例也能正常工作,我感到惊讶)

    由于您使用的是
    bash
    ,因此应该使用数组来保存参数,然后显式调用
    wget
    ,并展开数组以提供参数

    WGET_LOG_FILE=path/to/wget_log
    USER_AGENT='Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0x'
    
    wget_args=( "-U" "$USER_AGENT"
                "-a" "$WGET_LOG_FILE"
                "--no-clobber"
                "--wait=2"
                "--random-wait")
    
    wget "${wget_args[@]}" www.webpage.com
    

    感谢mate回答了我的两个问题,至于这个线程的第三个问题,你知道这是否是一个很好的等待时间吗?我不知道。根据你从谁的服务器下载,你可能想看看
    ——random wait
    。但是,因为我已经读到random wait从0到1.5乘以wait中指定的值,所以我想我是正确使用它。无论如何,谢谢你。我怎么会完全错过了你已经在使用它。那没关系!:)谢谢mate回答了我的两个问题,至于这个帖子的第三个问题,你知道这是否是一个好的等待时间吗?我不知道。根据你从谁的服务器下载,你可能想看看
    --随机等待
    插件但是tead。因为我已经读到随机等待从0到1.5乘以等待中指定的值,所以我想我使用它是正确的。无论如何,谢谢你,我完全没有注意到你已经在使用它了。那没关系!:)