在一天中的时间以不同的方式迎接用户 - Bash脚本

时间:2013-01-15 20:31:34

标签: bash shell unix

我需要根据一天中的时间问候用户(使用“早上好”,“下午好”或“晚上好”)。

我已经获得了用户详细信息($ userTitle $ userName)但是我不确定如何根据时间以不同的方式问候某人...任何想法?

8 个答案:

答案 0 :(得分:16)

h=`date +%H`

if [ $h -lt 12 ]; then
  echo Good morning
elif [ $h -lt 18 ]; then
  echo Good afternoon
else
  echo Good evening
fi

答案 1 :(得分:5)

你可以得到这样的时间:

TIME=$(date "+%H")

然后对该值采取行动,即

if [ $TIME -lt 12 ]; then
    echo "Good morning"
elif [ $TIME -lt 18 ]]; then
    echo "Good afternoon"
else
    echo "Good evening"
fi

答案 2 :(得分:2)

尝试这样做:

TIME=$(date "+%k")

if ((TIME < 12 )); then
    echo "Good morning"
elif ((TIME < 18 )); then
    echo "Good afternoon"
else
    echo "Good evening"
fi

  • 使用此语法,无需记住-ge等。这就像算术
  • ((...))是一个算术命令,如果表达式非零,则返回退出状态0;如果表达式为零,则返回1。如果需要副作用(赋值),也用作let的同义词。请参阅http://mywiki.wooledge.org/ArithmeticExpression

答案 3 :(得分:1)

hour=`date +%H`
if [ $hour -le 12 ]; then
    echo 'good morning'
elif [ $hour -ge 18 ]; then
    echo 'good evening'
else
    echo 'good afternoon'
fi

答案 4 :(得分:1)

除了一个细节,所有其他答案都是正确的。命令date +%H返回小时数 格式XX(例如,如果时间是09:00:00,则返回“09”)。在bash中,以零开头的数字是八进制数。所以这种细微差别会导致错误。

例如:

if [ 09 > 10 ] 
then
    echo "it's something strange here"
fi

将打印“这里有点奇怪”。

可能你选择的时间间隔不是造成这种行为的。 但是对于保险,你可以写:

小时= date +"%H" | sed -e 's/^0//g'

小心。

答案 5 :(得分:0)

具有功能的powershell中的Whatif?

def sort_provider(providers, attr)
  provider.sort!(|a,b| a."#{attr}" <=> b."#{attr}")
end

答案 6 :(得分:-1)

echo enter the time 
read time 
if [ $ time - lt 12 ]
then
echo good morning
elif [ $ time - lt 16 ]
then
echo good afternoon
elif [ $ time - lt 20 ]
then
echo good evening
elif [ $ time - lt 25]
then
echo good night
else
echo enter a valid number only 24 hour!!!!!!!
fi

答案 7 :(得分:-2)

h=`date|cut -d" " -f4|cut -d: -f1`
if [ $h -lt 10 ]; then
 echo Good Morning
elif [ $h -gt 10 -o $h -lt 16 ]; then
 echo Good Afternoon
elif [ $h -gt 16 -o $h -lt 20 ]; then
 echo Good Evening
else
 echo Good Night
fi