我正在编写将从系统捕获日期(星期几)的脚本,如果星期几是星期五,脚本将打印消息“任何消息”。我想我的脚本中缺少一些语法
#!/bin/bash
input_source=date|awk '{print $1}'
if $input_source=Fri
then
echo 'It is Friday !!!!'
else
exit
fi
您需要告诉 shell 执行命令,然后将它们的输出存储在变量中:
input_source=$(date|awk '{print $1}')
您还需要将测试括在方括号中:
if [ $input_source = Fri ]
如果你有幸拥有 Bash≥4.2,那么你可以使用printf
'%(...)T
修饰符:
printf '%(%u)T\n' -1
将打印今天的工作日,(1=星期一,2=星期二等)。请参阅man 3 strftime
支持的修饰符列表,以及 Bash 的参考手册中关于%(...)T
.
因此:
#!/bin/bash
printf -v weekday '%(%u)T' -1
if ((weekday==5)); then
echo 'It is Friday !!!!'
else
exit
fi
纯 Bash,没有 subshell!
命令输出应该用 `` 或 $() 包围
bash 中的比较应该由[
. 你可以man [
了解更多细节。
$ input=`date | awk '{print $1}'`
$ echo $input
Thu
$ if [ $input=Thu ]; then echo 'It is Thursday !!!!'; else exit; fi
It is Thursday !!!!