#!/bin/bash
dd=`date +%d`
mm=`date +%m`
yy=`date +%Y`
TODAY=`date +%d`
MONTH=`date +%m`
TOMORROW=`date +%d --date="1 days"`
echo $TODAY
echo $MONTH
#echo $TOMORROW
#if [ $TOMORROW < $TODAY ]; then
# exit 0
#fi
cd /Users/name/monthly
if [$TODAY == 01 && $MONTH == 01];
then
mkdir -p January
elif [$TODAY == 01 && $MONTH == 02];
then
mkdir -p February
elif [$TODAY == 01 && $MONTH == 03];
then
mkdir -p March
elif [$TODAY == 01 && $MONTH == 04];
then
mkdir -p April
elif [$TODAY == 01 && $MONTH == 05];
then
mkdir -p May
elif [$TODAY == 01 && $MONTH == 06];
then
mkdir -p June
elif [$TODAY == 01 && $MONTH == 07];
then
mkdir -p July
elif [$TODAY == 01 && $MONTH == 08];
then
mkdir -p August
elif [$TODAY == 01 && $MONTH == 09];
then
mkdir -p September
elif [$TODAY == 01 && $MONTH == 10];
then
mkdir -p October
elif [$TODAY == 25 && $MONTH == 11];
then
mkdir -p November
elif [$TODAY == 01 && $MONTH == 12];
then
mkdir -p December
fi
我正在尝试使用Shell脚本的每个月创建目录。出于测试目的,我将日期25用于11月,但条件语句将检查日期是否为01,月份是否为01..12,然后它将相应地创建文件夹。
今天和月份已打印,但对于条件语句,我得到的命令未找到错误。
test.sh:第21行:找不到命令.....
如果您不只是查看未找到命令,而是bash打印出的[[之前,您会立即看到您的错误:它输出未找到的命令。
bash中的条件语句的格式为if COMMAND
then
....
就您而言,COMMAND类似于
[$TODAY == 01 && $MONTH == 02]
实际上是两个命令,由&&连接。假设TODAY包含字符串05
。在这种情况下,您将拥有命令
[05 == 01
这意味着:使用参数[05
和==
调用名为01
的文件中存储的程序。由于您的PATH中可能没有这个奇数名称的文件,因此您得到找不到命令。
有几种解决方法,但是IMO,最易读的是
if [[ $TODAY == 01 && $MONTH == 05 ]]
在这种情况下,我们以[[
作为命令(而不是[05
),并且由于这是bash的语法元素而不是外部命令,因此它不会以&&
终止,而是延伸到结束]]
。