【发布时间】: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 手册页上以学习基本语法。