Bash 为什么是美元?创建一个文件?

Bash 为什么是美元?创建一个文件?,bash,Bash,在下面的脚本中,我正在测试如何计算命令运行的次数 #!/bin/bash echo "Hello" scount=$? if [ $scount -eq 0 ]; then count=$(cat ${scount}) else count=0 fi ((count++)) echo ${count} > ${scount} echo "Scount: $count" 这是我收到的输出。我不明白为什么会收到cat:0:

在下面的脚本中,我正在测试如何计算命令运行的次数

#!/bin/bash

echo "Hello"
scount=$?
if [ $scount -eq 0 ]; then
    
    count=$(cat ${scount})
else
    count=0
fi
((count++))

echo ${count} > ${scount}
echo "Scount: $count"
这是我收到的输出。我不明白为什么会收到
cat:0:没有这样的文件或目录
消息

你好 cat:0:没有这样的文件或目录 童子军:1 如Unix上所述

cat-连接文件并在标准输出上打印

正如美元上所说的那样

美元?是上次执行的命令的退出状态

因此:

  • cat命令需要在标准输出中读取和打印文件
  • 美元?是一个数字,其值为0,因为在脚本的该点执行的最后一个命令是
    echo“Hello”
    (执行良好=状态0)
您正在尝试执行类似于0类的操作,因此:

count=$(cat ${scount})
echo“你好”
童军=$?
如果[$scount-等式0];然后
计数=$(类别${Scont})
其他的
计数=0
fi
我认为您想将0分配给count,并使用
cat
而不是
echo

count=$(echo“$scont”)
但这是对echo的无用使用

count=$scont
但是现在您正在为
if
语句的两个分支中的count赋值0,这样您就可以删除整个
if

echo“你好”
童军=$?
计数=0

我不明白为什么我会收到cat:0:没有这样的文件或目录消息。
因为你用
scont
=
0
调用
cat${scount}
。它没有创建文件,这就是为什么没有这样的文件。鉴于您刚刚验证了Scont为零,您对猫的期望是什么?您在这里实际想做什么?你知道
$?
的意思吗?如果将文件作为参数提供给
cat