我有一个pages.txt文件,里面有100个URL。我想一个一个地检查它们,在第一个问题上失败。这就是我正在做的
pages.txt
cat pages.txt | xargs -n 1 curl --silent \ --output /dev/null --write-out '%{url_effective}: %{http_code}\n'; echo $?
字符串退出代码是1,但只有当整个文件完成时才能看到它。如何更早地停止,就第一个问题?
1
5jvtdoz21#
xargs -n 1 sh -c '<your_command> $0 || exit 255' < input
字符串
xargs -n 1 sh -c 'curl --silent --output /dev/null \ --write-out "%{url_effective}: %{http_code}\n" $0 || exit 255' < pages.txt
型
对于pages.txt中的每个URL,逐个执行sh -c 'curl ... $0 || exit 255'(-n 1),如果命令失败,则强制退出255。man xargs:如果对该命令的任何调用以255的状态退出,则xargs将立即停止,而不阅读任何进一步的输入。发生这种情况时,stderr上会发出一条错误消息。
sh -c 'curl ... $0 || exit 255'
-n 1
255
man xargs
xxslljrj2#
我还没有找到一种方法来完成您对xargs的要求,但是使用read循环可能是您正在寻找的。
while read URL; do curl --silent \ --output /dev/null --write-out '%{url_effective}: %{http_code}\n' $URL; RET=$?; echo $RET; if [ $RET -ne 0 ]; then break; fi done < pages.txt
2条答案
按热度按时间5jvtdoz21#
一般方法
字符串
具体案例
型
说明
对于
pages.txt
中的每个URL,逐个执行sh -c 'curl ... $0 || exit 255'
(-n 1
),如果命令失败,则强制退出255
。man xargs
:如果对该命令的任何调用以255的状态退出,则xargs将立即停止,而不阅读任何进一步的输入。发生这种情况时,stderr上会发出一条错误消息。
xxslljrj2#
我还没有找到一种方法来完成您对xargs的要求,但是使用read循环可能是您正在寻找的。
字符串