如何使用linux shell if语句脚本中的if语句检查条件

在shell脚本中进行条件控制以及使用循环_Linux编程_Linux公社-Linux系统门户网站
你好,游客
在shell脚本中进行条件控制以及使用循环
来源:Linux社区&
作者:winifred-tang94
if条件语句语法:
if [ 条件表达式 ]
注意:在上面的if条件语句中,if和 [ 之间要有空格,而条件表达式和两边的 [ ] 都要有空格,条件表达式不能紧挨着 [ 和 ]。
if条件表达式以fi结束。
结果出现了以下问题:
原因是因为开头在#!后还要有一个/,加上/后解释器错误没有了,代码如下:
可是仍然有没有那个文件或目录的错误。对于这个错误我觉得是echo后的表达式有问题,于是注销了表达式,改输出small和bigger,结果程序运行正确,输出了small或者bigger。
所以对于echo后的表达式,我把表达式加上双引号,结果运行成功,没有问题了。
利用case表达式进行条件判断:
case 变量 in
命令串;;
命令串;;
刚才之所以出错,是因为代码没有正确结尾,case条件语句在shell中应该以esca结尾。
又出现错误如下:
*后面的)为中文符号,将它改为英文符号,并且case条件语句的结束应该为esca而不是easc,修正后如下:
就正确了,正确结果如下:
在shell脚本中使用for循环
shell中可以使用三种循环:
A、for循环
第一种语法形式:for var in list
注意上面的list的形式可以使用空格分隔的$1 $2 $3,或者空格分隔的值1 2 3。
第二种语法形式:
在这种形式中,list被省略了,那么这时list就是指命令行参数,每次循环的var都是一个命令行参数。
eg.输出命令行参数的和
注意上面shell程序中echo命令的参数 -e是为了让\c 和\b生效,其中\c是表示输出加数后不换行,\b是退格的意思删除多余的+号。
运行脚本后出现错误:
expr不能喝test指令的-gt婚后在一起用,要不然将expr改为test,要不然将-gt改为&=
,值得注意的是&=前面要使用\。
仍然出错为:
sum求和时,等号两端不能有空格。
运行后结果为:
B、while循环
语法格式:while 条件表达式
命令行串;
eg.输出命令行每个参数
shift命令将命令行参数左移,是原来处于第二位的参数变成第一位然后输出。
注意while循环的条件表达式也要用空格将条件表达式与 [ 和 ]分隔开来。
如果要在while中使用另一个变量n,要用 -n 的形式来表示在循环体中使用的一元表达式:
当然如果while中不添加-n也有一样的结果:
C、until循环
语法格式如下:
until 条件表达式
本文永久更新链接地址:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款14:34 提问
shell脚本中如何判断sql语句执行是否成功
各位好,我是新手,想写一个shell,里面封装了几句impala是sql语句,但是sql语句很多,我想用shell判断下,如果sql执行错误就返回一个 error,然后程序跳出!写一个这样的模板! 做以后开发用!
大体思路就是:
impala-shell
-q "select * from
first_on_internet where day==1 ;"
if [ 如果上买到sql语句报错(如返回 ERROR: AnalysisException:),则就打印 sql
error 并且跳出shell,后面sql不执行,否则执行到最后一步打印 sql succell ]
echo " sql
ERROR: AnalysisException:
success ! "
按赞数排序
sql执行完会打印被修改的条数,如果条数为0则表示失败
ERROR: AnalysisException: 的错!
脚本是这样的
[root@dmniqf]# cat test_sh.sh
#!/usr/bin/env python
-*- coding: utf-8 -*-
impala-shell
-q "select * from
first_on_internet where day==1 ;"
"$?"= "0" ]
echo " sql
ERROR: AnalysisException:
success ! "
[root@dmp165 ningqf]# sh test_sh.sh
Starting Impala Shell without Kerberos authentication
Connected to dmp165:21000
Server version: impalad version 2.2.0-cdh5 RELEASE (build 2ffd73a42efd521362ffe1cfbc)
Query: select * from
first_on_internet where day==1
ERROR: AnalysisException: Syntax error in line 1:
select * from
first_on_internet where day==1 ** -- 这块是我特意写错的sq**l
Encountered: =
Expected: CASE, CAST, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUE, IDENTIFIER
CAUSED BY: Exception: Syntax error
Could not execute command: select * from
first_on_internet where day==1
test_sh.sh: line 10: [: 1=: unary operator expected
if [[ $? == 1 ]];then
echo 'sql error'
echo "sql success ! "
在shell上直接执行sql,执行成功返回值为0,执行失败返回值为1.当返回值为1的时候退出shell脚本即可
具体的你可以先验证一下。
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐Shell if else语句的用法详解_C语言中文网
&&C语言辅导班&&&&
&&C++辅导班&&&&
&&算法/数据结构辅导班&&&&
读者QQ交流群:loading...
&&/&&&&/&&&&/&&
shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:
& & if 条件命令串
  条件为真时的命令串
  条件为假时的命令串
大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等&&通常用& [ ] &来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
[ -f &somefile& ] :判断是否是一个文件
[ -x &/bin/ls& ] :判断/bin/ls是否存在并有可执行权限
[ -n &$var& ] :判断$var变量是否有值
[ &$a& = &$b& ] :判断$a和$b是否相等
执行man test可以查看所有测试表达式可以比较和判断的类型。下面是一个简单的if语句:
if [ ${SHELL} = &/bin/bash& ]; then
&& echo &your login shell is the bash (bourne again shell)&
&& echo &your login shell is not bash but ${SHELL}&
变量$SHELL包含有登录shell的名称,我们拿它和/bin/bash进行比较以判断当前使用的shell是否为bash。
编程帮,一个分享编程知识的公众号。跟着一起学习,每天都有进步。
通俗易懂,深入浅出,一篇文章只讲一个知识点。
文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
文章不涉及代码,不烧脑细胞,人人都可以学习。
当你决定关注「编程帮」,你已然超越了90%的程序员!
微信扫描二维码关注
本站精品教程
loading...
验证消息:严长生关于SHELL编程中的if嵌套问题
[问题点数:40分,结帖人abcdewind]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:20135
2013年4月 Linux/Unix社区大版内专家分月排行榜第一2012年8月 Linux/Unix社区大版内专家分月排行榜第一2011年10月 Linux/Unix社区大版内专家分月排行榜第一
2013年5月 Linux/Unix社区大版内专家分月排行榜第三2012年10月 Linux/Unix社区大版内专家分月排行榜第三2012年7月 Linux/Unix社区大版内专家分月排行榜第三2011年12月 Linux/Unix社区大版内专家分月排行榜第三
本版专家分:10113
本版专家分:192
本版专家分:192
本版专家分:192
本版专家分:35823
2013年8月 Linux/Unix社区大版内专家分月排行榜第一2012年11月 Linux/Unix社区大版内专家分月排行榜第一2012年10月 Linux/Unix社区大版内专家分月排行榜第一2012年9月 Linux/Unix社区大版内专家分月排行榜第一2012年7月 Linux/Unix社区大版内专家分月排行榜第一2012年6月 Linux/Unix社区大版内专家分月排行榜第一2012年5月 Linux/Unix社区大版内专家分月排行榜第一2011年11月 Linux/Unix社区大版内专家分月排行榜第一
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
本版专家分:184
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!
其他相关推荐
http://www.eoeandroid.com/thread--1.html
这个问题终于解决了,其实很简单的,只是我们想法太固执了,换个角度就解决了。
不管是ListView还是GridView,总有一个layout布局包裹着的吧,所以直接设置对应的layout的onclicklistener就可以实现了
今天同事问我listView的item项嵌套listView出现子listView中item显示不全问题,怎么解决。也在这里记录一下,出现这个情况,我们要做的就是重新测量一下子listview。
《Linux Shell编程学习笔记之二》:特殊变量($*和$@的区别)、命令替换和变量替换特殊变量一般变量比较简单哈,与Java、C/C++不一样的地方在于不需要定义,直接使用即可。例如:#!/bin/bash
var= &wojiushimogui&
echo ${var}
需要注意的两点:1、变量和等号之间不能有空格。2、使用变量的时候我们只需要在变量前面加上一个美元符号$即可。好的编程风格为
加一段这样的js就可以解决:
// 在被嵌套时就刷新上级窗口
if(window.parent != window){
window.parent.location.reload(true);
Android中scrollview嵌套listview,解决嵌套冲突问题
shell中if,for,while用法
在使用这种简单的if结构时,要特别注意if测试条件后如果没有”;”,则then语句要换行,否则会产生不必要的错误。如果if和then要处于同一行,则必须用”;”来终止if语句
一.Shell 编程的基本含义:
我理解的Shell 编程可以理解为一堆Shell 命令的集合
No.0 一个最简单的Shell 程序
#!/bin/bash
a=&456789&
b=$((a+13))
上面就是一个简单的Shell 程序,主要功能是进行大数加法。
我知道如果有一些
下面是几个关于shell简单的编程题目,算是熟悉一下shell吧
首先打开我们的终端,然后进入我的共享文件 cd /mnt/hgfs
看到在共享文件下游一个文件夹virtual
进入virtual 里面有个文件夹test
查看test里面的目录文件发现里面有一些文件,我们的编程例子就是这些文件
首先是第一个编程题目test1,将输入的字符串小写变大写,大写变小写
嵌套循环就是在一个循环中还有一个循环,内部循环在外部循环体中.在外部循环的每次执行过程中都会触发内部循环,直到内部循环执行结束.外部循环执行了多少次,内部循环就完成多少次.当然,不论是外部循环或内部循环的break语句都会打断处理过程.例子:嵌套循环#!/bin/bash
# nested-loop.sh: 嵌套的&for& 循环.
# 设置外部循环计数
一、取出/etc/passwd文件中shell出现的次数
问题:下面是一个/etc/passwd文件的部分内容。题目要求取出shell并统计次数,shell是指后面的/bin/bash,/sbin/nologin等,如下面/bin/bash出现12次,/sbin/nologin出现3次。
view plaincopy
hyn:x:525:500::/hshell脚本中的if中多条件语句如何写。_百度知道
shell脚本中的if中多条件语句如何写。
比如我实现这样一个效果:if[$a=&aa&-a$b=&bb&-o$c=&cc&-a$d=&dd&];thenechosuccessfi也就是变量a等于aa且变量b等于bb或者变量c等于cc且变量d等于dd这样的条件成立的话,输出success这...
比如我实现这样一个效果:if [ $a = &aa& -a $b = &bb& -o $c = &cc& -a $d = &dd& ]; then
echo successfi也就是变量a等于aa且变量b等于bb
或者 变量c等于cc且变量d等于dd 这样的条件成立的话,输出success这个语句怎么写,我按上面那种写法,提示有错误。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
行走的标本
行走的标本
采纳数:52
获赞数:163
if [ $a = &aa& -a $b = &bb& ] || [$c = &cc& -a $d = &dd& ];then
echo &success&fi是这个意思吗
xiehuahere
来自电脑网络类芝麻团
xiehuahere
采纳数:3679
获赞数:15831
参与团队:
success要用引号引起来(单引号、双引号都行),否则会被shell认为是一个变量。其他没什么错误。
本回答被网友采纳
擅长:暂未定制
if [ [ $a == &aa& -a $b == &bb&] -o [ $c == &cc& -a $d == &dd& ] ]thenecho &success&elseecho &false&fi解释:shell中,支持==,也支持=。==是比较,=是赋值。(看评论中的年限是16年的,或许18年的现在代码更新换代了吧)-a 可以理解为and-r 可以理解为orif后面跟[],且与或非三种必须在[]中使用!
2条折叠回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 shell编程——if语句 的文章

 

随机推荐