用于目录创建的Bash脚本条件语句-找不到命令错误

问题描述 投票:0回答:1
#!/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 date directory mkdir
1个回答
0
投票

如果您不只是查看未找到命令,而是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的语法元素而不是外部命令,因此它不会以&&终止,而是延伸到结束]]
© www.soinside.com 2019 - 2024. All rights reserved.