对于我的作业,我需要编写一个别名来检查给定文件是否规则且可读。我遇到的问题是,如果我包含 else if 或 elif 我会收到此错误......
-bash: syntax error near unexpected token `else'
这是我的代码...
alias getname='read filename'
alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $filename]; then echo "Not readable"; (exit 2); fi;'
我需要使用 else if ,这样如果出现错误,则只会打印一条语句。
我知道 shell 函数或脚本会更实用,但对于分配我必须使用别名。我对 UNIX 还很陌生,因此非常感谢任何帮助。
编辑:我确实必须使用别名,它是您提供的文件名(静态文件),即使我更改了,else if
我elif
仍然收到问题中描述的语法错误。
编辑2:我发现了问题,我删除了fi;
elif 语句之前的内容,但现在我收到错误missing ']'
。
答案1
所以这对我有用:
alias vfile='read -p "Enter the filename: " MY_FILE; if [ ! -f $MY_FILE ]; then echo "Irregular file"; (exit 1); elif [ ! -r $MY_FILE ]; then echo "Not readable"; (exit 2); fi'
编辑 我看到你在那里做了什么 =)
为了便于阅读,这里对命令进行了分解:
alias vfile='read -p "Enter the filename: " MY_FILE; \
if [ ! -f $MY_FILE ]; then \
echo "Irregular file"; \
(exit 1); \
elif [ ! -r $MY_FILE ]; then \
echo "Not readable"; \
(exit 2); \
fi'