【问题标题】:"Unexpected end of file" error in bash scriptbash 脚本中的“文件意外结束”错误
【发布时间】:2018-04-14 06:04:21
【问题描述】:

我正在编写一个应该接受的日历脚本

  • mmmmm 格式的任意月份,或
  • 只有yyyy 的年份,或者
  • 月份和年份。

这是我的脚本:

#!/bin/bash

if test s# -eq 0 
then
    echo "Invalid Arguments"
else
    if test s# -eq 2
    then
        if $1 -gt 1999 -o $2 -gt 12
        then
            echo "invalid Year or month"
        else
            cal $1 $2
            if test s# -eq 1 
            then
                if test $1 -gt 12 
                then
                    cal $1
                else
                    case $1 in 
                        01) m = jan;;
                        02) m = feb;;
                        03) m = mar;;
                        04) m = apr;;
                        05) m = may;;
                        06) m = jun;;
                        07) m = jul;;
                        08) m = aug;;
                        09) m = sep;;
                        10) m = oct;;
                        11) m = nov;;
                        12) m = dec;;
                    esac
                    echo " Calender for $1 Month : "
                    cal $m
                fi
            fi

我收到此错误:

第 38 行:语法错误:文件意外结束

我该如何解决这个问题?

【问题讨论】:

  • 每个if都需要有一个匹配的fi
  • 我已经缩进了你的代码。现在问题应该很明显了。
  • 以后,我建议在发布此类问题之前使用shellcheck.net。它发现了很多常见的错误。
  • 所有s# 应该是$#

标签: linux bash shell ubuntu unix


【解决方案1】:

文件末尾缺少两个fi。 但是,这里仍然给出错误,你能更明确地说明你在做什么,或者给出完整的代码吗?

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2011-09-16
    相关资源
    最近更新 更多