Bash脚本调用函数报错‘drive: command not found’问题排查
解决Bash脚本函数调用的错误问题
我来帮你搞定这个脚本错误!先看看你的问题细节:
你的脚本内容
#!/bin/bash drive_space () { echo "drive space" } $(drive_space)
错误信息
$ ./system_info.sh ./system_info.sh: line 8: drive: command not found
错误原因
你这里犯了一个典型的Bash命令替换误用问题:$(drive_space)是命令替换语法,它会先执行drive_space函数,把函数的输出结果(也就是drive space)当作一条新的Shell命令去执行。Shell看到drive space时,会把第一个词drive识别成要运行的命令,而系统里根本没有这个命令,所以就抛出了找不到命令的错误。
修正方法
如果你的需求只是调用函数并输出内容,直接写函数名即可,不需要用$()包裹。修正后的脚本如下:
#!/bin/bash drive_space () { echo "drive space" } # 直接调用函数,不需要命令替换 drive_space
额外说明
那什么时候才需要用$()呢?当你需要把函数的输出结果赋值给变量,或者作为其他命令的参数时才会用到,比如:
- 赋值给变量:
space_output=$(drive_space) - 作为其他命令的参数:
echo "当前磁盘信息:$(drive_space)"
内容的提问来源于stack exchange,提问作者anotherone
相关产品推荐
相关产品推荐

