[Linux](十七) --shell bash学习----基本语法及练习


写在开头


今天就开始写小脚本啦,但在这之前得了解一些基本的语法,学习每个语言基本都有的for,while ,if swtich啊,无非就是换了种格式。为了能更熟悉,照着鸟哥的私房菜里的练习都打了一遍。

下面是学习的一些语法


1.变量


之前已经学过变量的设置,范围了,可以看看

但在写shell里有几个特殊变量,需要注意的:

  • $0,$1,$2.... 代表脚本后面接的参数,$0是脚本名称,$1是脚本后面第一个参数,$2是脚本第二个参数,以此类推。

  • $#:指脚本后面你输出参数的个数。

  • $@:就是把你输入的参数都输出出来。

可以看看这个例子:
代码:


图片.png

结果:


图片.png

2.判断符号[],和判断语句if...else..fi


使用判断符号需要遵循一些规则:

  • 变量最好要加上双引号。
  • 每个组件之间都要有空格。(一开始老是犯错)

  • 常量最好要加上单引号。

那怎么使用呢,下面我列举了一些比较容易记的。

  • 关于文件类型的判断的

-e(exist) ,-f(file),-d(directory),-L(Linkfile).
分别是,文件名是否存在,文件是否存在,目录是否存在,连接文件是否存在。

  • 关于文件权限的判断

-r(read读),-w(write写),-x(excute执行)。
分别是,是否具有读权限,是否具有写的权限,是否具有执行的权限。

  • 两个文件的比较

-nt (newer than),-ot(older than),ef(equal file)
分别是,第一个文件是否别第二个文件新,第一个文件是否比第二个文件旧,两个文件是否为同一个文件。

  • 关于两个整数之间的大小比较

-eq (equal),-ne(not equal),gt(greater than),lt(less than),-ge(greater than or equal),-le(less than or equal)
分别是,等于,不等,大于,小于,大于等于,小于等于。

  • 关于字符串的判断

-z (zero):字符串是否为空,空的话,返回True
-n:与-z相反
str1 = str2: str1是否等于str2,等于返回True
str1 != str2:str1是否不等于str2,等于返回False

  • 类似于 或,且,非的条件判断

-a (all,就是且),两个条件同时成立才是真。
-o (or,或),其实一个条件为真,就是真。
!(非):就是非...

例子:

代码:


图片.png

结果:


图片.png

判断语句

应该学过一些变成基础都很容易学会,背好格式就好了。

格式:

if [条件]; then
一些内容
fi

来练习个书上的例子就好了。

代码:


图片.png

结果:


图片.png

上面的代码用了两个if语句,现在换成if ..elif ...esle 试试。

代码:


图片.png

现在只要一个if语句就能完成啦。


3.case...esac 类似switch


格式:

就是什么在什么里面,然后执行一段代码。

case $变量名称 in
"变量内容")
程序内容
;;
"变量内容")
程序内容
;;
*)
程序内容
;;
esac

例子:

代码:


图片.png

结果:


图片.png

4. 循环:for while... do...done, until... do... done


while格式:

while [条件]
do
程序内容....
done

例子:计算机1+2+3+....+100的值
图片.png

结果:


图片.png
  • 注意的地方,以前说过的,=号两边不能留空白。
  • 中括号里面每个组件都要分开。

until格式:

until [条件]
do
程序内容....
done

例子:改了下上面的例子,改成until格式。
图片.png

发现条件反了过来,结果还是5050。类似于java的do while。

for格式:

for ((初始的值;终止的值;每次增加的值))
do
程序内容....
done

例子:
图片.png

5.function,功能函数


function格式:

function 名称 () {
程序内容....
}

例子,定义一个函数,输入一个名字,输出hello+名字。

代码:


图片.png

结果:


图片.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,640评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,254评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,011评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,755评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,774评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,610评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,352评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,257评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,717评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,894评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,021评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,735评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,354评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,936评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,054评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,224评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,974评论 2 355

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,099评论 0 0
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,573评论 0 0
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,722评论 0 11
  • Linux Shell 基本语法 一. Linux基本命令 1.1. cp命令 该命令的功能是将给出的文件或目录拷...
    M_Baron阅读 2,593评论 0 1
  • 1.shell 概述 1.shell历史○命令解析器○终端下输入一个字符串 - 回车○去对应的路径下查找该字符串(...
    MagicalGuy阅读 1,975评论 0 0