在 bash 别名中使用 else if(作业)

在 bash 别名中使用 else if(作业)

对于我的作业,我需要编写一个别名来检查给定文件是否规则且可读。我遇到的问题是,如果我包含 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 ifelif仍然收到问题中描述的语法错误。

编辑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'

相关内容