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,因为在脚本的该点执行的最后一个命令是
(执行良好=状态0)echo“Hello”
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