仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1020|回复: 9
打印 上一主题 下一主题

[shell编程] 给大家带来Shell里的流程把持\函数及\剧本调试

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:18:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!先容Shell中的流程把持,比方判别语句等等…
if语句:
起首懂得几个常识:
[-f"somefile"]:判别是不是是一个文件
[-x"/bin/ls"]:判别/bin/ls是不是存在并有可实行权限
[-n"$var"]:判别$var变量是不是有值
["$a"="$b"]:判别$a和$b是不是相称
示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em][size=1em]#!/bin/sh
[size=1em]varOne=1
[size=1em]varTwo=2
[size=1em]varThree=3
[size=1em]if["$varOne"="$varTwo"];then
[size=1em]echo"varTwo:$varTwo"
[size=1em]elif["$varOne"="$varThree"];then
[size=1em]echo"varThree:$varThree"
[size=1em]else
[size=1em]echo"varOne:$varOne"
[size=1em]fi



务必注重,[]对照的时分其括号前后的空格别忘了!=等号前后也要有空格也要注重;
&&和||操纵符:
示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em][size=1em]#!/bin/sh
[size=1em]varOne=1
[size=1em]varTwo=2
[size=1em]varThree=3
[size=1em]if["$varOne"="$varThree"]||["$varOne"="$varTwo"];then
[size=1em]echo"||进进"
[size=1em]else
[size=1em]echo"No||进进"
[size=1em]fi
[size=1em]
[size=1em]if["$varOne"="$varOne"]&&["$varOne"="$varTwo"];then
[size=1em]echo"&&进进"
[size=1em]else
[size=1em]echo"No&&进进"
[size=1em]fi



case语句:
须知:
case表达式能够用来婚配一个给定的字符串,而不是数字(可别和C言语里的switch…case搅浑)。
示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em][size=1em]#!/bin/sh
[size=1em]
[size=1em]ftype=`file"$1"`#Noteand`isdifferent
[size=1em]case"$ftype"in
[size=1em]"$1:Ziparchive"*)
[size=1em]unzip"$1";;
[size=1em]"$1:gzipcompressed"*)
[size=1em]gunzip"$1";;
[size=1em]"$1:bzip2compressed"*)
[size=1em]bunzip2"$1";;
[size=1em]*)echo"File$1cannotbeuncompressedwithsmartzip";;
[size=1em]esac



特别变量$1,该变量包括有传送给该剧本的第一个参数值,也就是说,$1就是字符串articles.zip。
select语句:
select表达式是bash的一种扩大使用,善于于交互式场所。用户能够从一组分歧的值中举行选择:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em][size=1em]selectvarin...;do
[size=1em] break;
[size=1em]done
[size=1em]....now$varcanbeused....



示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em][size=1em]#!/bin/sh
[size=1em]
[size=1em]echo"WhatisyourfavouriteOS?"
[size=1em]selectvarin"Linux""GnuHurd""FreeBSD""Other";do
[size=1em]break;
[size=1em]done
[size=1em]echo"Youhaveselected$var"



假如以上剧本运转呈现select:NOTFOUND将#!/bin/sh改成#!/bin/bash该剧本的运转了局以下:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em][size=1em]WhatisyourfavouriteOS?
[size=1em]1)Linux
[size=1em]2)GnuHurd
[size=1em]3)FreeBSD
[size=1em]4)Other
[size=1em]#?1
[size=1em]YouhaveselectedLinux



while/for轮回:
示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em][size=1em]#!/bin/sh
[size=1em]varOne=1
[size=1em]varTwo=1
[size=1em]
[size=1em]#while
[size=1em]while["$varOne"="$varOne"];do
[size=1em]echo"whileDone"
[size=1em]break
[size=1em]done
[size=1em]
[size=1em]#for
[size=1em]forvarStrinHIMI;do
[size=1em]echo"varStris$varStr"
[size=1em]done



输入:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em][size=1em]whileDone
[size=1em]varStrisH
[size=1em]varStrisI
[size=1em]varStrisM
[size=1em]varStrisI
[size=1em]localhost:DesktopHimi$



select语句:
须知:select表达式是bash的一种扩大使用,善于于交互式场所。用户能够从一组分歧的值中举行选择:
示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em][size=1em]#!/bin/sh
[size=1em]echo"Whatisyourfavourite?"
[size=1em]selectvarin"iOS""Android""Himi""Other";do
[size=1em]break;
[size=1em]done
[size=1em]echo"Youhaveselected$var"



实行剧本后,守候用户输出,然后在终端输出你的选择,回车,以下显现:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em][size=1em]Whatisyourfavourite?
[size=1em]1)iOS
[size=1em]2)Android
[size=1em]3)Himi
[size=1em]4)Other
[size=1em]#?3
[size=1em]YouhaveselectedHimi
[size=1em]localhost:DesktopHimi$



函数:
假如你写过对照庞大的剧本,就会发明大概在几个中央利用了不异的代码,这时候假如用上函数,会便利良多。函数的大抵模样以下:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em][size=1em]functionname()
[size=1em]{
[size=1em]#insidethebody$1isthefirstargumentgiventothefunction
[size=1em]#$2thesecond...
[size=1em]body
[size=1em]}



示例代码:
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em][size=1em]#!/bin/sh
[size=1em]himi()
[size=1em]{
[size=1em]echo"Functionisok"
[size=1em]exit0
[size=1em]}
[size=1em]himi



剧本调试:
最复杂的调试***固然是利用echo下令。你能够在任何嫌疑堕落的中央用echo打印变量值,这也是年夜局部shell步伐员消费80%的工夫用于调试的缘故原由。Shell剧本的优点在于无需从头编译,而拔出一个echo下令也不必要几工夫。shell也有一个真实的调试形式,假如剧本”strangescript”堕落,可使用以下下令举行调试:
sh-xstrangescript
上述下令会实行该剧本,同时显现一切变量的值。shell另有一个不实行剧本只反省语法的形式,下令以下:
sh-nyour_script
OK,本章次要是为了熟习一些把持语句和经常使用常识点,那末到这关于Shell编程基本进修熟悉就算告一段落,若有需要今后会持续深切进修;临时足以;
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
兰色精灵 该用户已被删除
沙发
发表于 2015-1-15 23:06:22 | 只看该作者

给大家带来Shell里的流程把持\函数及\剧本调试

Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
活着的死人 该用户已被删除
板凳
发表于 2015-1-22 22:31:19 | 只看该作者
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
兰色精灵 该用户已被删除
地板
发表于 2015-1-31 15:46:44 | 只看该作者
当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
小妖女 该用户已被删除
5#
发表于 2015-2-6 22:09:38 | 只看该作者
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-19 04:41:48 | 只看该作者
工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
简单生活 该用户已被删除
7#
发表于 2015-3-6 13:25:37 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
精灵巫婆 该用户已被删除
8#
发表于 2015-3-13 03:08:36 | 只看该作者
通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
谁可相欹 该用户已被删除
9#
发表于 2015-3-13 03:08:35 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
透明 该用户已被删除
10#
发表于 2015-3-20 11:46:33 | 只看该作者
我感觉linux的学习,学习编程~!~!就去学习C语言编程!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-26 00:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表