【问题标题】:Bash script "Syntax Error: Unexpected end of file"Bash 脚本“语法错误:文件意外结束”
【发布时间】:2015-12-04 19:28:14
【问题描述】:

目标是使用 Bourne shell 创建一个简单的垃圾箱实用程序(它是作业的一部分)。我收到以下错误:“第 17 行:语法错误:文件意外结束”

我已经盯着代码几个小时了,我看不到错误(可能是我忽略了一些简单的事情)

#!/bin/sh

if [$# == 0] ;then 
    echo "Usage: trash -l | -p | { filename }*"
else
    if $1 == '-l'; then
        dir $HOME/.trash
    else if $1=='-p'; then 
        rm $HOME/.trash/*
    else
        for i in ${} ;do 
            mv i $HOME/.trash
        done
    fi
fi

谢谢!

【问题讨论】:

  • else if 更改为 elif ?祝你好运。
  • @SamiKuhmonen:不。
  • 更多错误:在 if 语句中使用空格并在比较整数时使用 -eq:if [ $# -eq 0 ]。使用ls,而不是dir。在${} 的大括号之间放置一个变量名。当您引用变量时,请使用$,如mv $i $HOME/.trash。以及你为什么停止在你的 if 语句中使用[](它们并不总是需要,但现在只需使用它们)。
  • 请通过shellcheck.net 运行您的代码。这些时间最好花在阅读 shell 手册页上以学习基本语法。

标签: shell unix sh


【解决方案1】:

这是我使用 shellcheck 实现的:

#!/bin/sh

if [ $# -eq 0 ] ;then 
    echo "Usage: trash -l | -p | { filename }*"
else
    if [ "$1" = '-l' ]; then
        dir "$HOME"/.trash
    elif "$1"=='-p'; then 
        rm "$HOME"/.trash/*
    else
        for i in ${} ;do 
            mv "$i" "$HOME"/.trash
        done
    fi

【讨论】:

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