程序检查今天是否是星期天

时间:2018-09-05 16:51:47

标签: bash shell scripting

该程序将检查今天是否是星期天,我正在考虑将其输出为字符串"$(date|cut -d ' ' -f 1)",然后将两个字符串进行比较

#!/bin/bash
    datetoday="$(date|cut -d ' ' -f 1)"
echo "${datetoday}"
s2="Sun"
if [ "${datetoday}" == "$s2" ]
then
echo "weekend"
else
echo "not weekend"
fi

1 个答案:

答案 0 :(得分:0)

date可以使用%a(星期日)和%A(星期日)输出您的工作日。 他们两个都足够:

#!/bin/bash
today="$(date +%a)"
sun="Sun"
[ "${today}" = "${sun}" ] && printf "weekend\n" || printf "not weekend\n"
exit 0

您可以轻松地使用%Asun设置为Sunday而不是Sunsun="Sunday"

如果需要整天检查,可以将测试与案例语句交换,如下所示:

#!/bin/bash
today="$(date +%a)"
case "${today}" in
  Mon|Monday)
    printf "not weekend\n"
    ;;
  ### etc.
  Sun|Sunday)
    printf "weekend\n"
    ;;
esac
exit 0

编辑:正如@tinita所说,如果您未设置正确的语言环境,则可能无法将日期与“星期天”匹配(例如,EG法语为“ Dimanche”,意大利语为“ Domenica”)。 / p>

您可以避免更改语言环境,或使用其他date选项。

实际上,date +%u会给您一个1到7之间的数字,其中1是星期一。

#!/bin/bash
today="$(date +%a)"
[ "${today}" -eq 7 ] && printf "weekend\n" || printf "not weekend\n"
exit 0

@chepner指出的另一件事是,如果您正在将输出写入文件,而文件系统中没有足够的空间来写入“ weekend \ n”(8字节),则快捷方式a && b || c将无法正常工作。

撇开一边,确实的确,快捷方式不是发出if语句的正确方法,您应该始终喜欢规范的方法:

#!/bin/bash
today="$(date +%a)"
if [ "${today}" -eq 7 ]; then
  printf "weekend\n"
else
  printf "not weekend\n"
fi
exit 0
相关问题