如果第一个表达式 returns 在 bash 中出错,则为数组赋值

Assign value to array if first expression returns an error in bash

我不是很懂 shell 并且偶然发现了这个问题

我有一个包含文件夹位置的数组和一个包含我试图为它们获取的值的数组,但是文件夹来来去去,所以有时,当我 运行 检查以获取它们的关联时值,该文件夹不再存在。

我想在文件夹不存在时隐藏 cat returns 的错误,并能够为变量赋予另一个值。

在尝试挖掘了一下之后,我想到了这个,它不起作用,但我一直在尝试的似乎都没有:

userName[i]={ "$(cat "/mainFolder/${userCodes[i]}/name")" } || { "$errorValue"; }

Cat 在失败时抛出 No file or directory 错误并且“$errorValue”抛出“: -1: command not found”

这似乎是您要查找的内容:

userName[i]=$(cat "/mainFolder/${userCodes[i]}/name" 2>/dev/null || echo "$errorValue")

2>/dev/null 隐藏来自 cat 的错误消息,而 echo 提供默认值。

更新:

"$errorValue" throws ": -1: command not found"

这是因为 bash 插入变量的值并将其值用作命令名称。您可以尝试以下操作以了解我在说什么:

some_var='echo'
"${some_var}" 'Hello!'

这将打印 Hello! 到控制台。