标签: exit-status

当整数 grep 与字符串不匹配时返回什么退出代码?

当整数 grep 与字符串不匹配时返回什么退出代码?

我知道匹配时返回 0,不匹配时返回 1。

那是对的吗?

grep exit-status

1
推荐指数
1
解决办法
8162
查看次数

tput 命令在 if 语句中不起作用

我正在尝试在 bash 脚本的 if 语句中使用 tput 命令,但由于某种原因,它的行为出乎意料。当运行命令然后仅在 if 语句中检查退出代码时,事情可以正常工作,但是,当直接在 if 语句中运行命令时,事情不再起作用。这是一个简单的脚本来说明我的问题:

#!/bin/bash

tput setaf 1
if [ $? ]
then
  echo "first if works"
fi

if tput setaf 1
then
  echo "second if works"
fi
Run Code Online (Sandbox Code Playgroud)

运行此脚本只会打印“如果有效,则首先”。这两个 if 语句不应该工作,因为它们是等效的吗?我错过了什么吗?顺便说一句,这是在 FreeBSD 上运行的,以防万一。

freebsd bash shell-script tput exit-status

1
推荐指数
1
解决办法
318
查看次数

如果将错误数量的参数传递给我的脚本,如何退出并显示失败代码?

我正在使用 bash。如果我的脚本参数数量错误,如何以不成功代码退出?

我有这个

#!/bin/bash

if [ "$#" -ne 3 ]; then
    echo "Should be three parameters to this script -- [CWD driver-directory side-file]"
fi
Run Code Online (Sandbox Code Playgroud)

但随后脚本继续。

bash shell-script exit-status

1
推荐指数
1
解决办法
2184
查看次数

如何检查 if 语句中的命令退出代码

如果命令退出时代码为 143(超时,来自“超时命令”),我会尝试返回 0 退出代码,否则返回 1。由于外部约束(CI 脚本),我必须启动命令并在 if 子句中进行检查。

这是我目前使用的:

if timeout -t 10 *command* || [ $? = 143 ]
then exit 0
else exit 1
fi
Run Code Online (Sandbox Code Playgroud)

目前,它总是以 0 代码退出。

shell-script ash exit-status

0
推荐指数
1
解决办法
1万
查看次数

即使命令错误,为什么退出代码为 0?

我正在 bash 脚本中测试不同的东西,但我遇到了一个无法解释的问题。

我故意写了一个错误的命令,以获得不同于 0 的退出代码,但不知何故,我似乎仍然得到 0。

我正在执行的代码是:

USER_NAME=$(id -uns)

if [[ ${?} -ne 0 ]]
then
    echo "Your command failed to execute with exit code ${?}"
    exit 1
fi
echo "Your username is ${USER_NAME}"
Run Code Online (Sandbox Code Playgroud)

我的代码的输出是:

id: 未知选项 -- s

尝试“id --help”以获取更多信息。

您的命令无法执行,退出代码为 0

您的用户名是

我猜它以某种方式显示了 echo 命令的退出代码?即便如此,如果退出码为0,为什么会进入if语句呢?

如果是这样,那么我怎样才能让它显示应该显示的实际退出代码?

shell bash shell-script exit-status

0
推荐指数
1
解决办法
463
查看次数

如果命令失败,则失败脚本,但无论如何都要运行所有命令

我需要运行的脚本中有一些命令,它是源代码的自定义 linter。每次运行都会生成一个报告,并在违反规则的情况下以退出代码 1 失败。我需要在失败之前运行所有命令以生成报告,如果任何命令失败且退出代码为非零,则失败。此脚本不起作用,因为它在第一个错误时存在:

lint ./module1/src/main/java && lint ./module2/src/main/java && lint module3/src/main/java
Run Code Online (Sandbox Code Playgroud)

现在我正在使用这个脚本:

lint ./module1/src/main/java
code1="$?"
lint ./module2/src/main/java
code2="$?"
lint ./module3/src/main/java
code3="$?"

if [[ "$code1" != "0" || "$code2" != "0" || "$code3" != "0" ]]; then
  exit 1
fi
Run Code Online (Sandbox Code Playgroud)

但它看起来过于复杂并且不可扩展(我需要添加额外的变量并检查下一个命令)。

有没有可能让这个脚本更优雅?

bash exit-status

0
推荐指数
1
解决办法
232
查看次数

是否有类似 ping 的程序会在数据包丢失时返回 false?

我正在尝试诊断家庭 LAN 上的网络不稳定情况——我的路由器和电缆调制解调器之间的连接丢失。在我的 shell 脚本中,我想通过调制解调器 ping 第一个 IP 地址,并在失败时返回 false,以便我可以在我的脚本中触发其他操作。

有没有人知道这样的野兽?

networking ping exit-status

-1
推荐指数
1
解决办法
276
查看次数

为什么反斜杠不产生非零退出代码

如果运行:

 true \ false; echo $?
Run Code Online (Sandbox Code Playgroud)

我得到 0 的退出代码。有谁知道这是为什么?

shell bash exit-status

-1
推荐指数
1
解决办法
45
查看次数

标签 统计

exit-status ×8

bash ×5

shell-script ×4

shell ×2

ash ×1

freebsd ×1

grep ×1

networking ×1

ping ×1

tput ×1