所以我有一个脚本,当我给它两个地址时,它将搜索两个 HTML 链接:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
我想将其发送到wget
,然后将输出保存在名为temp.html
.我尝试过这个,但它不起作用。有人可以解释原因和/或给我一个解决方案吗?
#!/bin/bash
url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
wget $url
答案1
您可以使用反引号 (`) 来计算命令并替换命令的输出,例如:
echo "Number of files in this directory: `ls | wc -l`"
在你的情况下:
wget `echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g'`
答案2
您可以使用“xargs”。一个简单的例子:
ls -1 *.c | sort -n | xargs cat
您必须注意 xargs 不会将其 stdin 拆分为命令的两个或多个调用(上例中的“cat”)。
答案3
你实际上并没有执行你的 url 行:
#!/bin/sh
url="$(echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g')"
wget $url
答案4
xargs
是将一个命令的输出放入另一个命令的参数中的最佳选择。
假设 command1 的输出是3
,并且您希望下一个命令将其3
作为参数,您将需要这样的内容
command2 3(which is output of 1st command) 4 5
所以,为此你可以这样做
command1 | xargs -I{} command2 {} 4 5
其中 4 和 5 是 可能需要的另外两个参数command2
。
您可以将大括号放在您想要第一个命令输出的位置。
所以,使用
command1 | xargs -I{} command2 {}