关于shell if 的问题

cpp_1 2019-03-07 08:58:14
我现有一个程序
echo "input a1"
read a1
echo "input a2"
read a2
echo "input a3"
read a3

if [ $a1 ='' -a $a2='' -a $a3='' ]
then
echo “abc"
fi


if [ $a1 !='' -a $a2 !='' -a $a3 !='' ]
then
echo "456"
fi


1。 a1,a2,a3都没有输入的时候,显示是正确的,显示abc 。


2。这个a1 ,a2 ,a3要是都不输入的时候,才显示456

但,现在可以在a1,a2,a3中任意输入一个,他也会显示456

这个shell 的if 语法到底是怎么用的,怎么和C# JAVA都不一样?

还是我写的不对。
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2019-03-08
  • 打赏
  • 举报
回复
想要知道 shell 的 if 的语法,可以使用 man test 命令看
mymtom 2019-03-08
  • 打赏
  • 举报
回复
你的代码有两个问题
1. 等于(=)和不等于(!=) 两端要有空格
2. 由于 a1, a2, a3 可能为空,所以需要双引号

echo "input a1"
read a1
echo "input a2"
read a2
echo "input a3"
read a3

if [ "$a1" = '' -a "$a2" = '' -a "$a3" = '' ]
then
echo "abc"
fi


if [ "$a1" != '' -a "$a2" != '' -a "$a3" != '' ]
then
echo "456"
fi

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧