我有一个pages.txt个文件,里面有pages.txt个URL.我想一个接一个地判断它们,第一个问题就失败了.这就是我正在做的:

cat pages.txt | xargs -n 1 curl --silent \
  --output /dev/null --write-out '%{url_effective}: %{http_code}\n'; echo $?

退出代码是1,但我只有在整个文件完成后才能看到它.如何在第一个问题上更早地停止?

推荐答案

一般方法

xargs -n 1 sh -c '<your_command> $0 || exit 255' < input

具体 case

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上发出错误消息.

Linux相关问答推荐

使用sed替换字符,但如果它是在bash csv文件中的字符串中,则不使用

为什么硬编码的阿拉伯字母与Unicode代码点不具有相同的值

shell中两个日期的天数差异

Bash:将带有新行的字符串转换为带有逗号、内联的唯一值的字符串

2023 年如何在现代 Linux 上安装 Firebird SQL 版本 3 或 4?

重命名具有相同前缀的文件对中最旧的文件

使用 YASM 程序集时如何更改 64 位 Linux 中的终端 colored颜色 ?

当未在日志(log)中输入确切的时间戳时如何过滤日期范围内的值

使用具有特定值的字段对文件进行排序

在三星 chromebook 上编程

如何使用 __attribute__((visibility("default")))?

如何彻底剥离可执行文件

如何使用 AWK 合并两个文件?

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法

grep 时间命令输出

bash 中的线程?

从线程内Forking 是否安全?

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗

grep 递归查找 Linux 上的特定文件类型

如何用逗号而不是空格分割列表