使用函数或变量在bash中响应成功通知的更好的或合乎逻辑的方法?
我希望使用函数或变量来响应一个成功的通知 为了这个例子,我们将使用使用函数或变量在bash中响应成功通知的更好的或合乎逻辑的方法?,bash,function,shell,logic,sh,Bash,Function,Shell,Logic,Sh,我希望使用函数或变量来响应一个成功的通知 为了这个例子,我们将使用sleep 1。我想做的是打印一个初始通知(标题或描述),然后在命令通过时打印一个成功通知 我试过这样做: function notice() { if [ -z "$1" ] then echo -e "\r[OK]" else echo -n "[ ] $1" fi } notice "This is a command" sleep 1 notice
sleep 1
。我想做的是打印一个初始通知(标题或描述),然后在命令通过时打印一个成功通知
我试过这样做:
function notice()
{
if [ -z "$1" ]
then
echo -e "\r[OK]"
else
echo -n "[ ] $1"
fi
}
notice "This is a command"
sleep 1
notice
结果将显示:
我也尝试过另一种方法,比如在最后显示复选标记
\u2174)
,但我不确定是否有更好的方法来编码/解决这个问题。短而简洁的代码总是值得赞赏的。在过去的一年里,我写了很多bash脚本。它们中的大多数都有某种“通知”功能,用于测试某个值是否等于另一个值,并在出现错误时打印消息。我认为最好使脚本尽可能安静,除非您确实需要用于日志记录目的的消息。我想给你一个关于代码的选择
您的解决方案
#/bin/bash
功能通知{
如果[-z“$1”];则
回显“[]错误]”
elif[[$1=~^[0-9]+$]];然后
如果[$1-相等于“$2”];则
回声“[确定]”
其他的
回显“[失败]”
fi
其他的
echo-n“[]1美元”
$1
fi
}
注意“真的”
通知$?0
注意“假”
通知$?0
通知
出口0
我的解决方案
#/bin/bash
功能信息{
本地消息=$1
本地tst=$2
本地增值税=$3
[“$tst”-eq“$val”]| | echo$msg
}
真的
消息“错误为真”$?0
假的
消息“错误为false时出错”$?0
出口0
模具解决方案如果要立即中止脚本,可以执行以下操作:
function notice()
{
if [ -z "$1" ]
then
echo -e "\r[OK]"
else
echo -n "[ ] $1"
fi
}
notice "This is a command"
sleep 1
notice
#/bin/bash
出口粘虫=$$
MYEXIT=1
函数误差{
退出$MYEXIT
}
函数die(){
本地消息=$1
MYEXIT=2美元
echo“$0:$msg”
kill-s术语“${MYPID}”
}
陷阱“错误”术语
真的
[$?-eq 0]| | die“您将不会看到此消息。”1
假的
[$?-eq 0]| | die“此处显示您的错误消息!”2
出口0
输出
# Your solution
$ ./notice.sh
[ ] true [ OK ]
[ ] false [ FAIL ]
[ ] <empty> [ ERROR ]
$ echo $?
0
# My solution
$ ./message.sh
error on false
$ echo $?
0
# Die solution
$ ./die.sh
./die.sh: Your error message here!
$ echo $?
2
在过去的一年里,我写了很多bash脚本。它们中的大多数都有某种“通知”功能,用于测试某个值是否等于另一个值,并在出现错误时打印消息。我认为最好使脚本尽可能安静,除非您确实需要用于日志记录目的的消息。我想给你一个关于代码的选择 您的解决方案
#/bin/bash
功能通知{
如果[-z“$1”];则
回显“[]错误]”
elif[[$1=~^[0-9]+$]];然后
如果[$1-相等于“$2”];则
回声“[确定]”
其他的
回显“[失败]”
fi
其他的
echo-n“[]1美元”
$1
fi
}
注意“真的”
通知$?0
注意“假”
通知$?0
通知
出口0
我的解决方案
#/bin/bash
功能信息{
本地消息=$1
本地tst=$2
本地增值税=$3
[“$tst”-eq“$val”]| | echo$msg
}
真的
消息“错误为真”$?0
假的
消息“错误为false时出错”$?0
出口0
模具解决方案如果要立即中止脚本,可以执行以下操作:
function notice()
{
if [ -z "$1" ]
then
echo -e "\r[OK]"
else
echo -n "[ ] $1"
fi
}
notice "This is a command"
sleep 1
notice
#/bin/bash
出口粘虫=$$
MYEXIT=1
函数误差{
退出$MYEXIT
}
函数die(){
本地消息=$1
MYEXIT=2美元
echo“$0:$msg”
kill-s术语“${MYPID}”
}
陷阱“错误”术语
真的
[$?-eq 0]| | die“您将不会看到此消息。”1
假的
[$?-eq 0]| | die“此处显示您的错误消息!”2
出口0
输出
# Your solution
$ ./notice.sh
[ ] true [ OK ]
[ ] false [ FAIL ]
[ ] <empty> [ ERROR ]
$ echo $?
0
# My solution
$ ./message.sh
error on false
$ echo $?
0
# Die solution
$ ./die.sh
./die.sh: Your error message here!
$ echo $?
2
你关心实际的退出状态吗?目前,脚本将始终打印
[OK]
,无论发生什么。是的,这只是一个示例,因此使用了简单的代码。它应该有错误检查(在失败的情况下),但我需要知道的是这个问题解决背后的逻辑。我应该使用函数、变量还是其他什么,因为这个通知是需要重复的,每次我列出几个命令时我都需要调用它。我需要一个更干净或更短的方法来做这件事。谢谢你的反馈。你关心实际的退出状态吗?目前,脚本将始终打印[OK]
,无论发生什么。是的,这只是一个示例,因此使用了简单的代码。它应该有错误检查(在失败的情况下),但我需要知道的是这个问题解决背后的逻辑。我应该使用函数、变量还是其他什么,因为这个通知是需要重复的,每次我列出几个命令时我都需要调用它。我需要一个更干净或更短的方法来做这件事。谢谢你的反馈。我真的很感谢你花时间留下一个完整的答案和优秀的例子。我接受了,谢谢你。我真的很感谢你抽出时间给我留下一个完整的答案,并列举了一些很好的例子。我接受了,谢谢你。