在bash脚本中定义wget的属性
我试图在程序开始时设置wget的属性,以便将它们用于所有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_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中执行的,这就是为什么它没有得到它
因此,问题是:
感谢一般来说,您不应该依赖于将参数扩展为要运行的命令的名称及其参数;它在简单情况下可以正常工作,但很快就会遇到问题。我无法准确解释您看到的错误(因为您没有引用
$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乘以等待中指定的值,所以我想我使用它是正确的。无论如何,谢谢你,我完全没有注意到你已经在使用它了。那没关系!:)