构建基本shell脚本

shell脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另一个命令。shell可以让你将多个命令串起来,一次执行完成。如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开。
date ; who

如果用管道符实现,则只输出最终的结果,并不显示中间结果。
date | who

要将shell命令放到文本文件中,首先需要用文本编辑器vim来创建一个.sh后缀的shell脚本文件,然后将命令输入到文件中。并且,在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:
#!/bin/bash
一般来说#用作注释行,而#!用来告诉系统用哪个shell程序来运行脚本。
比如我们创建一个test.sh的脚本:

创建好shell脚本之后,我们该如何运行这个.sh的脚本文件呢?
提供两个方法:
1.是调用bash命令执行:bash test.sh。在bash命令的用法里,bash后面是可以直接跟脚本文件的。

执行结果:

2.是用绝对或相对文件路径来直接执行shell脚本文件:/home/zhang/zz/sh_script/test.sh或者./test.sh。但这种方法一定要注意,需要给这个脚本赋予可执行(x)的权限。否则会遇到Permission denied。

赋予test.sh可执行的权限:

大多数shell命令都会产生自己的输出显示在控制台显示器上。
通过echo命令可以添加自己的文本消息来告诉用户,shell脚本正在做什么。
echo -n 可以把文本字符串和命令输出显示在同一行中。我们对之前的脚本内容进行修改:

输出显示则为:

变量允许你临时性地将信息存储在shell脚本中,以便和脚本中的其他命令一起使用。在脚本中,可以在环境变量名称之前加上美元符($)来使用这些环境变量。
只要脚本在引号中出现美元符($) ,它就会以为你在引用一个变量。而当你在美元符($)前放置一个反斜线(\)时,则会输出美元符($)加变量名称,而不是变量对应的值。

除了直接调用系统自带的环境变量外,shell脚本还允许自己去定义并直接使用变量。
用户定义的变量可以是任何由字母、数字或下划线组成的文本字符串,长度不超过20个,区分大小写。定义的变量允许临时存储数据并在整个脚本中使用(局部变量)。
使用等号将值赋给用户变量。在变量、等号和值之间不能出现空格。当你一旦退出这个脚本后,在shell命令行是无法直接调用脚本中所定义的变量!

shell脚本中最有用的特性之一就是可以从一个命令的输出中提取信息,并将其赋给变量。把输出赋给变量之后,就可以随意在脚本中使用了。
有两种方法可以将命令的输出赋给变量:
1.反引号字符(`),` COMMAND `。(在你键盘上波浪号那里)
2. $() 格式,$(COMMAND)。

在脚本中通过命令替换获得当前日期并用它来生成唯一文件名。
+%y%m%d格式告诉date命令将日期显示为两位数的年月日的组合。

如果我们想查看该脚本(以及所有文件)中有多少行的内容,可以使用
wc命令可以对对数据中的文本进行计数。默认情况下,它会输出3个值:
•文本的行数
•文本的词数
•文本的字节数
-l参数则表示只看有多少行。我们也可以一次性查看所有文件的行数,用通配符(*)。

在shell脚本中有两种途径来进行数学运算。
1. 使用expr 命令。 注意符号与数字之间要有 空格 。expr 部分字符需要转义字符反斜杠(\)
2. 使用美元符($)+ 方括号 [] 或者 $+双小括号 (())

使用 $[operation] 或 $((operation)) 
用美元符和方括号 $[ operation ] 或 $((operation))将数学表达式围起来。括号内还可以使用变量进行运算。且不用转义符反斜杠(\),不用注意空格。

bash shell数学运算符只支持整数运算。
内建的bash计算器bc允许在命令行中输入浮点表达式,然后解释并计算该表达式,最后返回结果。在命令行输入bc,即可进入到bc计算机的应用程序当中。退出bc计算器:quit

那我们如何在shell脚本中使用bc呢?
可以用管道符(|)运行bc命令,并将输出赋给一个变量。基本格式如下:
variable=$(echo "options; expression" | bc)
options允许你设置变量值的格式。如果不止一个变量用分号(;)分开。 expression定义了通过bc执行的数学表达式。

shell中运行的每个命令都使用退出状态码(exit status)告诉shell它已经运行完毕。退出状态码是一个0~255的整数值,在命令结束运行时由命令传给shell。可以捕获这个值并在脚本中使用。
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。

默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码(0)退出。
exit命令允许你在脚本结束时指定一个退出状态码。
正常退出状态码是0,现在我们指定退出状态码为5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值