首页 > 解决方案 > 为什么是美元?创建一个文件?

问题描述

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

#!/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: No such file or directory消息。

Hello
cat: 0: No such file or directory
Scount: 1

标签: bash

解决方案


正如 Unix手册中所说的 cat

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

正如在 $ 上所说的那样?这里

美元?是最后执行的命令的退出状态。

所以:

  • cat 命令希望在标准输出中读取和打印文件
  • 美元?是一个数字,其值为 0,导致在该脚本点执行的最后一个命令是echo "Hello"(执行良好 = 状态 0)

你正试图cat 0用这个做这样的事情:

count=$(cat ${scount})

推荐阅读