gpt4 book ai didi

linux - 使用$?在 if 语句条件表达式中

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:31 25 4
gpt4 key购买 nike

采用以下 bash 脚本:

#!/bin/bash

ls /sdfg

if [ $? -gt 0 ]
then
echo "Command failed: $?"
else
echo "Command succeeded: $?"
fi

输出将是:

ls: cannot access /sdfg: No such file or directory
Command failed: 0

失败的 ls 命令实际上返回了 2,if 语句捕获了这个,并且 echos 命令失败了,但是为什么 $?更新为零?看起来 if/then 行被视为新命令。

最佳答案

[其实是二进制,不只是一些标点符号:

$ ls -l /usr/bin/[
-rwxr-xr-x 1 root root 51920 Feb 18 07:37 /usr/bin/[
$ /usr/bin/[ --version
[ (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.

在某些系统上可能是指向 test 的符号链接(symbolic link)。

所以在这里

if [ $? -gt 0 ]

$? 是您的 ls 调用的结果,但在这里

    echo "Command failed: $?"

$? 是在上一行执行 [ 的结果。

如果你想从一个命令中多次测试 $?,你必须把它塞进一个临时变量中:

ls blahblah
temp=$?
if [ $temp ... ]
if [ $temp ... ]

关于linux - 使用$?在 if 语句条件表达式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com