我想写一个函数来检查执行的Linux命令的退出状态,并在命令执行失败或正确执行时进行回声。
#!/bin/bash
check_command(){
if [$? -eq 0]
then
echo "Command Executed"
else
echo "Command Failed"
fi
}
ls -la
check_command()
当我运行这个bash脚本时,我得到以下错误。
test_command.sh: line 16: syntax error: unexpected end of file
需要什么代码才能正确执行脚本而不出错?
1条答案
按热度按时间ftf50wuq1#
您有基本的格式错误,并且未能将退出条件传递给
check_command()
函数以与0
进行比较。[ ... ]
的参数旁边留出一个空格,例如:[ "$1" -eq 0 ]
(注:始终在[ ... ]
中引用变量$?
作为参数传递给check_command()
,例如:(**注意:**调用函数时不要在末尾包含
()
)然后函数
$1
的第一个位置参数将包含退出条件,例如:把它放在一起,你可以做:
(note:重定向到
/dev/null
,以抑制ls -al
输出,如果需要,可以删除)对于大多数命令,不需要编写一个函数来检查退出状态。您可以简单地使用
||
创建一个复合命令,其中实用程序本身将错误写入stderr
,您可以退出(或以任何方式处理失败),例如。如果您想在命令成功时执行某些操作,可以使用
command && cmd_on_success
。如果将脚本粘贴到ShellCheck中,它将发现存在的任何语法和脚本问题。这给予解决简单问题的好方法。