Bash 几个,如果
Bash several and in if
你好,我有一个包含这样日期的 csv 文件,我想用 bash 解析它并检查今天的日期。
12-Jan-2015
只检查日期和月份效果很好
DAT=$(date '+%d %b %Y')
DAY=${DAT:0:2}
MON=$(echo ${DAT:3:3} | awk '{print toupper("[=12=]");}')
YEAR=${DAT:6:5}
while IFS=",-" read name day month year
do
day=$(printf "%02d\n" "$day")
month=$(echo "$month" | awk '{print toupper([=12=]);}')
year=$(printf "%04d\n" "$year")
if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ]; then
echo "$name";
fi
done < $SNAPDB > $SNAPTMPDB
但是当我也尝试检查年份时
if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ] && [ "$year" -eq "$YEAR" ]; then
脚本以错误结束:第 119 行:2015:找不到命令
我现在已经尝试了几种写作方式,例如 [[ … ]] -a 等等。但没有任何效果。
感谢帮助!
对 'and' 使用 -a
,对 'or' 使用 -o
。来自文档:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html(具体看Table 7-2)
根据评论更新:
使用双括号和圆括号:
if ( [[ "$day" -eq "$DAY" ]] && [[ "$month" = "$MON" ]] && [[ "$year" -eq "$YEAR" ]] ); then`
你好,我有一个包含这样日期的 csv 文件,我想用 bash 解析它并检查今天的日期。
12-Jan-2015
只检查日期和月份效果很好
DAT=$(date '+%d %b %Y')
DAY=${DAT:0:2}
MON=$(echo ${DAT:3:3} | awk '{print toupper("[=12=]");}')
YEAR=${DAT:6:5}
while IFS=",-" read name day month year
do
day=$(printf "%02d\n" "$day")
month=$(echo "$month" | awk '{print toupper([=12=]);}')
year=$(printf "%04d\n" "$year")
if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ]; then
echo "$name";
fi
done < $SNAPDB > $SNAPTMPDB
但是当我也尝试检查年份时
if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ] && [ "$year" -eq "$YEAR" ]; then
脚本以错误结束:第 119 行:2015:找不到命令
我现在已经尝试了几种写作方式,例如 [[ … ]] -a 等等。但没有任何效果。
感谢帮助!
对 'and' 使用 -a
,对 'or' 使用 -o
。来自文档:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html(具体看Table 7-2)
根据评论更新:
使用双括号和圆括号:
if ( [[ "$day" -eq "$DAY" ]] && [[ "$month" = "$MON" ]] && [[ "$year" -eq "$YEAR" ]] ); then`