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

当bash中不存在文件时,如何更改结果?,bash,Bash,当文件不存在时,我无法打印结果。假设我在bash中使用此代码 v1=`cat /ieee80211/phy2/rcstats` echo $v1 当文件存在时,它将显示如下值 0.8 0.6 0.3 if [! -f $v1]; then echo "1.0" fi 但当文件不存在时,它只会显示: cat: /ieee80211/phy2/rcstats: No such file or directory 如何将该警告更改为1.0 据我所知,我就是这样做的 0.8 0.6 0.3

当文件不存在时,我无法打印结果。假设我在bash中使用此代码

v1=`cat /ieee80211/phy2/rcstats`
echo $v1
当文件存在时,它将显示如下值

0.8
0.6
0.3
if [! -f $v1]; then
  echo "1.0"
fi
但当文件不存在时,它只会显示:

cat: /ieee80211/phy2/rcstats: No such file or directory
如何将该警告更改为
1.0

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

0.8
0.6
0.3
if [! -f $v1]; then
  echo "1.0"
fi
但结果是,当文件存在时,它将只打印
1.0
,并且警告仍然出现


我该怎么办?谢谢

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

像这样:

file="/ieee80211/phy2/rcstats"
if [ -f $file ]
then
    v1=$(< $file)
fi
file=“/ieee80211/phy2/rcstats”
如果[-f$文件]
然后
v1=$(<$文件)
fi

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

像这样:

file="/ieee80211/phy2/rcstats"
if [ -f $file ]
then
    v1=$(< $file)
fi
file=“/ieee80211/phy2/rcstats”
如果[-f$文件]
然后
v1=$(<$文件)
fi

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

if [ ! ... ]; then
    ^
   here

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

if [ ! ... ]; then
    ^
   here

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

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

注意。避免使用反勾号,请改用
$(…)

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

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


注意。避免使用反勾号,请改用
$(…)

我已为未来读者编辑了您的答案。如果您认为更改不相关,请随时回滚更改。@PLB:S’好的,当用户(非维基)的内容已编辑。我已为未来读者编辑了您的答案。如果您认为更改不相关,请随时回滚更改。@PLB:S’好的,当用户(非维基)的编辑的东西。这不是最好的错误处理:如果文件不可读,你会有一个错误。即使在处理过程中<<代码> CAT/COD>失败了,你也可能会有一个错误。非常感谢。然后v1='1.0'else v1=
cat$文件
fi这取决于您想在错误处理方面走多远,但您是对的,如果您想真正安全,还有更多事情要检查。bash有一个
$(cat$文件)
-->
v=$(<$file)的缩写。这将节省你几毫秒,不知道它,这不是最好的错误处理:如果文件不可读,你将有一个错误。即使在处理过程中<<代码> CAT/COD>失败,你也可能有一个错误。非常感谢。然后v1='1.0'else v1=
cat$文件
fi这取决于您想在错误处理方面走多远,但您是对的,如果您想真正安全,还有更多事情要检查。bash有一个
$(cat$文件)
-->
v=$(<$file)的缩写
。这将为您节省几毫秒的时间,我不知道!OP的
v1=`cat…`
中的反勾号由于错误引用而丢失,现已修复。非常感谢您的回答OP的
v1=`cat…`
中的反勾号由于错误引用而丢失,现已修复。非常感谢您的回答