我有几个问题想要回答,因为到目前为止我还不是Bash专家……在执行特定任务之前,我需要检查几个条件,但其中一些是相关的,无法分离:我希望检查以下语句:
if ((1 OR 2) AND (3 OR 4))
then
blabla...
fi到目前为止我做到了,
if [[ "[ `echo "$5" | cut -c 1-2` -lt 0 || `echo "$5" | cut -c 1-2` -gt 23 ]" && "[ `echo "$5" | cut -c 4-5` -lt 0 || `echo "$5" | cut -c 4-5` -gt 23 ]" ]]
then
echo "La plage horaire indiquée n'est pas valide ! Format = HH-HH"
exit 3
fi而且它工作正常。我有一种感觉,为了执行这个检查,可以做一些容易得多的事情,但我看不出如何……
第二件事,在我上面写的代码中,你可以看到:
"[ `echo "$5" | cut -c 1-2` -lt 0 || `echo "$5" | cut -c 1-2` -gt 23 ]"简单的方括号对应于测试函数,对吗?那么,为什么在使用双引号时会正确地调用它呢?我明白我不能在那里放任何反引号,这对我的回声“$5”没有任何意义…但是双引号应该替换特殊字符,如$,并防止忽略单个空格,那么为什么它要替换[字符?它被认为是这些特殊字符中的一个吗?
提前感谢您的回答!
发布于 2011-05-06 21:31:39
不要重复自己的话:
a=$(echo "$5" | cut -c 1-2)
b=$(echo "$5" | cut -c 4-5)或者使用bash参数扩展语法:
a=${5:0:2}
b=%{5:3:2}你可以使用算术替换:
if (( a < 0 || a > 23)) && (( b < 0 || b > 23 )); then
echo "La plage horaire indiquée n'est pas valide ! Format = HH-HH"
exit 3
fi发布于 2011-05-06 18:32:29
来自help [[
( EXPRESSION )返回表达式
的值
https://stackoverflow.com/questions/5909811
复制相似问题