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

时间:2017-11-10 12:29:55

标签: arrays linux bash shell cat

我并没有真正陷入困境,偶然发现了这个问题

我有一个包含文件夹位置的数组和一个数组,其值为I' m试图获取这些值,文件夹来去匆匆,所以有时,当我运行检查以获取其关联值时,文件夹已经没有了。

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

在尝试挖掘之后,我想出了这个,它没有用,但我似乎没有尝试过:

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

Cat失败时会抛出No file或directory错误,并且" $ errorValue"抛出":-1:未找到命令"

1 个答案:

答案 0 :(得分:0)

这似乎就是你要找的东西:

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

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

<强>更新

  

“$ errorValue”throws“: - :找不到命令”

这是因为bash会插入变量的值并使用其值,就像命令的名称一样。您可以尝试以下方法来查看我在说什么:

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

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