如何在bash中不存在文件时更改结果?

时间:2013-07-02 07:46:55

标签: bash

当文件不存在时,打印结果时出现问题。假设我在bash中使用此代码

v1=`cat /ieee80211/phy2/rcstats`
echo $v1

当文件存在时,它将显示如下的值

0.8
0.6
0.3

但是当文件不存在时,它只会显示:

cat: /ieee80211/phy2/rcstats: No such file or directory

如何将该警告更改为1.0

我所知道的,我就是这样做的

if [! -f $v1]; then
  echo "1.0"
fi

但结果只是在文件存在时打印1.0,并且警告仍然显示

我该怎么办?谢谢

3 个答案:

答案 0 :(得分:4)

[是一个命令。它需要它与第一个参数之间的空格。

if [ ! ... ]; then
    ^
   here

答案 1 :(得分:1)

在这种情况下,最好的错误处理是检查文件是否存在,如果存在,请执行cat,而不是相反。

像这样:

file="/ieee80211/phy2/rcstats"
if [ -f $file ]
then
    v1=$(< $file)
fi

答案 2 :(得分:0)

如果您不想处理文件不存在的情况,您可以使用:

{ v1=$( </ieee80211/phy2/rcstats ) ; } 2>/dev/null
echo "$v1"

注意。避免使用反引号,而是使用$(...)