我并不是真的对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/null
对 cat
隐藏错误消息,而echo
提供默认值。
更新:
"$errorValue"抛出": -1:找不到命令">
这是因为 bash 插入变量的值并使用其值(如命令名称(。您可以尝试以下方法以了解我在说什么:
some_var='echo'
"${some_var}" 'Hello!'
这会将Hello!
打印到控制台。