0

我正在编写将从系统捕获日期(星期几)的脚本,如果星期几是星期五,脚本将打印消息“任何消息”。我想我的脚本中缺少一些语法

#!/bin/bash
input_source=date|awk '{print $1}'
if $input_source=Fri
then
  echo 'It is Friday !!!!'
else
  exit
fi
4

3 回答 3

1

您需要告诉 shell 执行命令,然后将它们的输出存储在变量中:

input_source=$(date|awk '{print $1}')

您还需要将测试括在方括号中:

if [ $input_source = Fri ]
于 2013-06-06T02:08:58.430 回答
0

如果你有幸拥有 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,没有 subshel​​l!

于 2014-11-09T23:10:34.993 回答
0

命令输出应该用 `` 或 $() 包围

bash 中的比较应该由[. 你可以man [了解更多细节。

$ input=`date | awk '{print $1}'`
$ echo $input
Thu
$ if [ $input=Thu ]; then   echo 'It is Thursday !!!!'; else   exit; fi
It is Thursday !!!!
于 2013-06-06T02:09:42.830 回答