shell脚本(1)——构建基本脚本

1. 使用多个命令

shell 脚本允许将多个命令串起来放进脚本中。创建脚本的最基本的方式是将命令行中的多个命令通过分号分开来,shell就按照顺序逐个执行命令,在显示器上显示每个命令的输出。

但是上述方法对于小型脚本尚可,但是它有一个很大的缺陷:每次运行前,都必须在命令提示符输入整个命令。可以将这些命令组合成一个简单的文本文件,这样就不需要再命令行中手动的输入了。在需要运行这些命令的时候,只用运行这个文件文件就可以了。

1.2 创建shell脚本

可以创建一个shell脚本,将多个命令放进同一个文件,让shell依次执行。shell脚本必须定义用于运行脚本的shell。这个可以通过#!符号在脚本文件的第一行输出,后面指定shell的完整路径。

  1. 要将shell命令放到文本文件中,首先需要通过用【文本编辑器】来创建一个文件,然后将命令输入到文件中。
  2. 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell,其格式为:
    【#!/bin/bash】。在通常的shell脚本中,(#)用作注释行,shell并不会处理shell脚本中的注释行,然而,shell脚本的第一行是个例外,#后面的惊叹号会告诉shell用哪个shell来运行脚本。
  3. 在指定了shell之后,就可以在文件的每一行中输入命令,然后加一个回车符。
#! /bin/bash
# This script displays the date and who's logged on
date
who

上述就是脚本的所有内容。可以根据需要,使用分号将两个命令放在一行,但在shell脚本中,可以在独立的行中书写命令。shell会按照命令在文件出现的顺序进行处理。

第一行的内容指定了shell脚本解释器的路径,若是不写第一行时,系统存在默认的解释器路径。

1.3 bash shell如何找到脚本文件

shell会通过PATH环境变量来查找命令。

$ echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:user/local/bin:/usr/bin

2. shell变量

shell脚本内,可以通过变量前使用美元符来引用环境变量。也可以定义自己的变量以便在脚本中使用,并对其赋值,甚至可以通过反引号或$()捕获某个命令的输出。在脚本中可以通过变量名前放置一个美元来使用变量的值。

例如:

[root@VM_130_4_centos ~] echo ps -ef|grep java|awk '{print $2}'
[root@VM_130_4_centos ~] echo `ps -ef|grep java|awk '{print $2}'` 
626 1060 2789 4049 4691 5259 5669 8732 9539 9658 11798 14599 15556 

使用反引号的部分会当做一个命令去运行。

3. shell的重定向

shell允许更改命令标准输入输出。将其重定向到其他地方。可以通过大于号将命令输出从显示器屏幕重定向到一个文件中。也可以通过双大于号将输出数据追加到已有文件。小于号用来将输入重定向到命令。可以将文件重定向到某个命令。

4. shell管道符

shell管道符命令允许将命令的输出直接重定向到另一个命令的输入。Linux系统可以同时运行这两条命令,将第一个命令的输出发送给第二个命令的输入,不需要借助任何重定向文件。

5. shell运算

shell提供了多种方式在shell脚本中执行数学操作。

  1. expr命令是一种进行整数运算的简便方法。
  2. 美元符号放在方括号包围的表达式之前来执行基本的数学运算。
  3. 需要利用bc计算器命令,将内联数据重定向到输入,然后将输出存储到用户变量中。

6. shell退出状态码

shell中运行的每一个命令都会产生一个退出状态码。退出码是一个0-255的整数值,表明命令是否成功执行;如果没有成功,可能的原因是什么。退出状态码0表明命令成功执行了。也可以在shell脚本中用exit命令来声明一个脚本完成时的退出状态码。

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

推荐阅读更多精彩内容