linux之脚本编程基础二

简介:

        Linuxshell脚本编程基础(二)

 

4.8Bash中的基本程控制语法

1.       if……then……else

if语句用于判断和分支,在linux中的具体结构用法如下:

if [expression]; then

  statements

fi

例子:

if [ -e /etc/shells ]; then

  file `cat /etc/shells` | tr ‘a-z’ ‘A-Z’

fi

-e判断/etc/shells是否存在,如果存在则把shells文件中的小写替换成大写

If [ expression ]; then

   statements

else

  statement

fi

例子:

If [ num1 –gt num2 ];then

 Echo “the max num is num1 ”

Else

Echo “then max num is num2”

Fi

对两个数的大小进行判断,如果num1大于num2则输出num1 否则输出num2

If [ expression ]; then

Statement

elseif, [ expression ];then

statement

else

statement

fi

例子:

If [ $1 –gt 90 ];then

 echo “$1 is best”

elif [ $1 –gt 70 ];then

 echo “$1 is good”

else

 echo “$1 is bad”

fi

这个例子中的$1就是上面变量中提到的地址变量,可以接受传递过来的参数。

2.       for循环结构

for 变量 in 列表; do

  statement1

  statement2

  ………..

done(结束)

其中列表表示法:{1….100}`seq 1 100`两种

例子:计算1100的和

declear  -i SUM=0

for NUM in {1…100};do

 SUM=$[$SUM+$NUM]

 done

echo “the sum is $SUM”

简单介绍一下这个程序,declear SUM=0表示先把存放和的值赋空,因为一个变量没有初始值时,会存放一个随机的初始值。然后利用for循环从1开始计算并依次把和存放到SUM变量中,直到NUM=100时条件结束,SUM变量中存放最终的结果。

3.       while循环和untile循环

while循环的借本结构是:

while [ condition ]; do

 statements

done

until循环的基本结构是:

until [ condition ];do

  statements

done

这里把while循环和until循环放到一块说明,是因为他们结构大体一致,只是循环条件又些许差异。While循环是当条件满足时进入循环体,直到条件不满足时退出循环,而until循环则是当条件不满足时进入循环体,条件满足时退出循环。大家来看一个例子就能明了的直到他们的区别了。

我们还以计算100以内的整数之和为列。

 declear –i SUM=0

 declear –I COUNT=1

while [ $COUNT –le 100 ];do

  SUM=$[$SUM+$COUNT]

  let COUNT++

done

这是while循环,表示只要变量COUNT不大于100就一直执行循环体。那大家可以想想如果换成until循环,条件该如何控制,这里我就不做说明了。

4.       case语句

bash中的case结构可以进行多项分支控制,其基本结构是:

case 变量 in

condition1)

statement1

;;

condition2)

statement2

;;

….

*)

default statements

;;

esac

特别提醒:每一个分支后面一定要有;;结束

下面这个程序是运用case结构进行分支执行的例子

#!/bin/bash 
#
echo "Hit a key, then hit return." 
read Keypress 


case "$Keypress" in 
[a-z] ) echo "Lowercase letter";; 
[A-Z] ) echo "Uppercase letter";; 
[0-9] ) echo "Digit";; 
* ) echo "Punctuation, whitespace, or other";; 
esac

上面例子中的read语句表示从键盘上读取输入。

5.       break/continue

break语句是停止循环,而continue语句则是跳出当次循环而提前进入下一次循环。这里就不再举例子说明了。

6. 函数的使用

函数的定义是为了方便程序的结构化设计,可以把一个很复杂而常用的一段代码写到一个函数体中,使用时直接调用这个函数体即可。

函数的定义如下:

function myfunctionname{ code block}

或者myfunctionname(){code block}

需要说明的是函数的定义必须要放在函数使用之前。那么如何给函数传递参数和获得返回值呢?

传递参数:在函数体中可以用保留变量$1 $2..来引用调用时传递过来的参数即可。

获得返回值:可以用return语句来指定返回值,这个值是一个0-255的一个整数,如果没有使用return特定返回一个值得话,则以最后一条语句执行的结果作为返回值。下面举一个例子

FUSER(){

if id $1 &>/dev/null;then

 echo “UID:`id –u $1`”

else

echo “no such user”

return 1

fi

}

read MYUSER

FUSER $MYUSER

这是一个显示用户ID的例子,在循环体中我们用到了前面提到的if语句,在函数体中先判断用户是否存在,如果存在则输出用户ID,否则输出没有该用户并return返回一个值。然后最后直接使用函数名来调用这个函数,并传递参数MYUSER给函数体。

一.         BASH 程序的调试

            bash –n bash-script 命令可以测试你写的脚本是否有语法错误,然后再 bash -x bash-script 命令查看一个出错的 BASH 脚本到底用在什么地方,可以帮助程序员找出脚本中的错误。

 本文转自  沐木小布丁  51CTO博客,原文链接:http://blog.51cto.com/sxhxt/904783


相关文章
|
4月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
240 29
|
4月前
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
208 13
|
4月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
113 4
|
4月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
252 3
|
5月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
382 25
|
5月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
420 28
|
12月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
6月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
7月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
564 32
|
7月前
|
存储 Linux 网络安全
linux应急响应检查脚本
通过这个脚本,可以快速收集系统的关键信息,有助于在发生问题时进行及时的应急响应和分析。
236 34