如果第一个表达式在 bash 中返回错误,则为数组赋值



我并不是真的对shell很了解,偶然发现了这个问题

我有一个包含文件夹位置的数组

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

我想隐藏 cat 在文件夹不存在时返回的错误,并能够为变量提供另一个值。

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

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

Cat 在失败时抛出"无文件或目录"错误,"$errorValue"抛出":-1:找不到命令">

这似乎是您要查找的:

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

2>/dev/nullcat 隐藏错误消息,而echo提供默认值。

更新:

"$errorValue"抛出": -1:找不到命令">

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

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

这会将Hello!打印到控制台。

最新更新