将两个部分连接在一起形成一个脚本

将两个部分连接在一起形成一个脚本

我正在尝试创建一个脚本来执行以下操作:从 lynx 书签中提取磁力链接,然后将其用作 curl 命令的一部分。像这样:

curl http://my_ip:my_port_number/startdownload/magnet_link

我有以下内容来获取磁力链接:

lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-

但我不确定如何将两个部分粘合在一起以创建一个脚本。

我可以提供一些建议吗?

顺便说一句,我对此完全是业余爱好者,我确信即使有什么也可以改进。

答案1

因此,您需要捕获一个命令的输出,并在另一个命令中使用它。 bash $(..) 语法将允许您执行命令并捕获输出,然后您可以在另一个命令中使用该输出。

一种方法是捕获变量中的输出,例如:

shortcut=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep magnet | sed 's/&.*//' | cut -c 7-)
curl "$shortcut"

或者,您可以直接使用输出:

curl $(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)

您选择哪个取决于您的喜好。如果您需要多次使用命令的输出,那么最好将输出捕获到变量中并从那里使用它。

答案2

将以下行放入脚本文件中,例如 ad mydownload.sh

magnet=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)
curl http://my_ip:my_port_number/startdownload/${magnet}

保存并退出

chmod 755 mydownload.sh
./mydownload.sh

答案3

bash-4.1$ echo $( echo hi )
hi
bash-4.1$ 

所以,

curl $( ... )

通过将这些命令作为子 shell 运行...来传递任何内容的输出。也可以用反引号编写,尽管它们是要读取的标头,并且不嵌套。curl$()

grep | sed也许可以用对 的一次调用来替换awk

相关内容