gpt4 book ai didi

linux - Shell 脚本 - 如何根据输入模拟某些结果?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:09:07 27 4
gpt4 key购买 nike

我有一个小脚本可以验证数据库服务器上的某些条件。我想模拟所有这些条件下的失败以测试脚本,因此我添加了以下行:

./print_results ${VAR1} ${VAR2} ... ${VARN}

如果任何变量的值不是零,那是因为它失败了。

所以只是为了测试目的,我添加了这行:

VAR1=1 ; VAR2=1 ; ... ; VARN=1

但每次我想用假结果替换真实结果时,我都需要编辑文件。

这是怎么回事?

[! -z $1 ] && [ "$1" == "Y"] && { echo "Debugging is ACTIVE" ; VAR1=1 ; ... ; VAR2=1 ; }

我想在通过该行后得到 VAR1..N = 1

谢谢。

最佳答案

问题是 [ 是命令,而 [! 不是。编写代码可能更干净:

test "{$1}" == Y && { echo "Debugging is ACTIVE"; VAR1=1 VAR2=1 ...; }

变量赋值之间不需要分号,但它们不会造成伤害。

这是 sh 的缺点之一。出于某种原因,人们认为使用符号 [ 作为命令并将其作为参数传递给 ] 是一个好主意,试图模仿语言中的大括号。不幸的是,这会导致很多混淆,类似于这个问题中所展示的那样。最好完全避免 [ 并始终将其拼写为 test。这两个在功能上是相同的(除了 [ 命令必须有 ] 作为最后的参数),并且使用 test 更简洁。 (您希望 test! 工作吗?还是您认为它需要写成 !test?)

关于linux - Shell 脚本 - 如何根据输入模拟某些结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212053/

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