/d-6ren">
gpt4 book ai didi

linux - bash 脚本中的这个 if 语句有什么作用?

转载 作者:IT王子 更新时间:2023-10-29 00:26:12 26 4
gpt4 key购买 nike

我是 bash 脚本的新手,正在通过一些示例进行学习。我看到的一个示例是使用 if 语句来测试先前分配的输出文件是否有效,如下所示:

if [ -n "$outputFile" ] && ! 2>/dev/null : >> $outputFile ; then
exit 1
fi

我了解 [ -n "$outputFile"] 的作用,但不了解条件的其余部分。谁能解释一下 ! 2>/dev/null : >> $outputFile 是什么意思?

我用谷歌搜索了答案,但找到的大多数链接都是关于 I/O 重定向的解释,这绝对是相关的,但对 仍然不清楚! : >> 结构。

最佳答案

那是一些奇怪的代码!

: 命令内置于 bash 中。相当于true;它什么都不做,成功了。

: >> $outputFile

尝试不做任何事情,并将(空)输出附加到 $outputFile -- 这已经被确认为非空字符串。 >>> 重定向运算符将创建文件(如果该文件尚不存在)。

I/O 重定向,例如 2>/dev/null 可以出现在简单命令的任何地方;他们不必在最后。因此,: 命令的标准输出(为空)被附加到 $outputFile,并且任何 stderr 输出都被重定向到/dev/null。任何此类 stderr 输出都是重定向失败的结果,因为 : 命令本身什么都不做,也不会失败。我不知道为什么 stdout 的重定向(到 $outputFile 的末尾)和 stderr 的重定向(到 /dev/null)在 :命令。

! 运算符是一个逻辑“非”;它检查以下命令是否成功,并将结果取反。

最终的结果,用英文文本写成:

如果设置了“$outputFile”并且它不是空字符串,并且如果我们没有写入它的权限,则以状态 1 终止脚本。

简而言之,它会测试我们是否能够写入 $outputFile,如果不能,则退出。

关于linux - bash 脚本中的这个 if 语句有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536331/

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