Bash脚本函数实现:子程序成功输出结果、失败屏蔽错误并输出指定内容
正确的Bash函数实现
read_i2s_register () { local RESULT=$(/usr/bin/i2sget -y 1 0x55 0x08 2>/dev/null) if [ $? -eq 0 ]; then echo "${RESULT}" else echo "SUPPRESSED" fi }
问题修正说明
- 屏蔽标准错误输出:在调用
i2sget时添加2>/dev/null,将标准错误(文件描述符2)重定向到空设备,彻底阻止失败时的"Error: Read failed"信息输出到终端。 - 修复语法错误:原代码中
if [ $? -eq 0 ]:的冒号是语法错误,必须改为分号;(或换行单独写then),否则Bash会解析失败,导致else分支无法触发。 - 语法优化:用
$()替代反引号`捕获命令输出,可读性更强且支持嵌套场景。 - 避免变量拆分:给
echo的变量引用加上双引号"${RESULT}",防止输出内容包含空格或特殊字符时出现意外拆分。
内容的提问来源于stack exchange,提问作者fearless_fool
相关产品推荐
相关产品推荐

