10

時間帯に応じて、ユーザーに挨拶する必要があります (「おはよう」、「こんにちは」、または「こんばんは」を使用)。

私はすでにユーザーの詳細 ($userTitle $userName) を取得していますが、時間に応じて異なる方法で誰かに挨拶する方法がわかりません... 何かアイデアはありますか?

4

8 に答える 8

20
h=`date +%H`

if [ $h -lt 12 ]; then
  echo Good morning
elif [ $h -lt 18 ]; then
  echo Good afternoon
else
  echo Good evening
fi
于 2013-01-15T20:36:16.697 に答える
6

あなたはこのような時間を得ることができます:

TIME=$(date "+%H")

次に、その値に基づいて行動します。

if [ $TIME -lt 12 ]; then
    echo "Good morning"
elif [ $TIME -lt 18 ]]; then
    echo "Good afternoon"
else
    echo "Good evening"
fi
于 2013-01-15T20:35:54.853 に答える
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を参照してください。
于 2013-01-15T20:42:36.043 に答える
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
于 2013-01-15T20:37:58.650 に答える
1

1つの詳細を除いて、他のすべての答えは正しいです。コマンドdate +%Hは XX の形式で number 時間を返します (たとえば、時間が 09:00:00 の場合、「09」が返されます)。ゼロで始まる bash の数字は 8 進数です。したがって、このニュアンスはエラーを引き起こす可能性があります。

例えば:

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

「ここは何かおかしい」と表示されます。

おそらく、そのような動作を引き起こさない時間間隔を選択したのでしょう。ただし、保険の場合は次のように書くことができます。

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

注意してください。

于 2013-01-15T20:53:05.340 に答える
0

関数を持つpowershellでWhatif?

function Get-Greeting
    {
    $Hour = (Get-Date).TimeOfDay.Hours
    if($Hour –ge 0 –and $Hour –lt 12)

    {
        $greet = “Good Morning give me a coffee !!”
    }
    elseif($Hour –ge 12 –and $Hour –lt 16)
    {
        $greet = “Good Afternoon How is the weather today?”
    }
    else
    {
        $greet = “Good Evening sir, want to sip a tea?”
    }

    $Username = $env:USERNAME

    return $(“$greet , You have logged in as User, $Username” )
    }
        enter code here
于 2017-08-24T10:55:34.390 に答える
-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
于 2015-08-09T07:05:16.077 に答える