在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。
其格式为:#!/bin/bash
在通常的shell脚本中,井号( # )用作注释行。shell并不会处理shell脚本中的注释行。然而,
shell脚本文件的第一行是个例外, # 后面的惊叹号会告诉shell用哪个shell来运行脚本(是的,你
可以使用bash shell,同时还可以使用另一个shell来运行你的脚本)。
在指定了shell之后,就可以在文件的每一行中输入命令,然后加一个回车符。之前提到过,
注释可用 # 添加。例如:
# 同一个行输出内容 加参数-n
echo -n "当前时间: "
date
# 命令替换
!/bin/bash
# This script displays the date and who's logged on
# 注意下面不是单引号,而是键盘上esc下面那个键,date的输出内容赋值给testing
testing=`date`
# 也可以这样写 testing=$(date)
echo $testing
who
# 重定向输入和输出
# 当前目录创建文件test6并内容输出到文件中
date > test6
# 输入重定向
# wc 命令可以对对数据中的文本进行计数。默认情况下,它会输出3个值:
# 文本的行数
# 文本的词数
# 文本的字节数
wc < test6
# 管道通信
# ps -ef 的输出作为后一个命令grep 的输入
# grep 返回 包含bash字段的一行记录
ps -ef|grep 'bash'
有几种解决方案能够克服bash中数学运算的整数限制。
最常见的方案是用内建的bash计算器,
叫作 bc 。
bc 的基本用法
bash计算器实际上是一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该
表达式,最后返回结果
# bash计算器
# 输入quit退出bash计算器
# 浮点运算是由内建变量 scale 控制的。必须将这个值设置为你希望在计算结果中保留的小数
# 位数,否则无法得到期望的结果
# 除了普通数字,bash计算器还能支持变量
# 变量一旦被定义,你就可以在整个bash计算器会话中使用该变量了。 print 语句允许你打印
# 变量和数字
# 在脚本中使用 bc
# 也可以用shell脚本中定义好的变量
# 一旦变量被赋值,那个变量也可以用于其他运算
这个方法适用于较短的运算,但有时你会涉及更多的数字。如果需要进行大量运算,在一个
命令行中列出多个表达式就会有点麻烦。
有一个方法可以解决这个问题。 bc 命令能识别输入重定向,允许你将一个文件重定向到 bc
命令来处理。但这同样会叫人头疼,因为你还得将表达式存放到文件中。
最好的办法是使用内联输入重定向,它允许你直接在命令行中重定向数据。在shell脚本中,
你可以将输出赋给一个变量
Linux提供了一个专门的变量 $? 来保存上个已执行命令的退出状态码。对于需要进行检查的
命令,必须在其运行完毕后立刻查看或使用 $? 变量。它的值会变成由shell所执行的最后一条命令
的退出状态码
按照惯例,一个成功结束的命令的退出状态码是 0 。如果一个命令结束时有错误,退出状态11.8 退出脚本
229
码就是一个正数值
默认情况下,shell脚本会以脚本中的最后一个命令的退出状态码退出
你可以改变这种默认行为,返回自己的退出状态码。 exit 命令允许你在脚本结束时指定一
个退出状态码
你要注意这个功能,因为退出状态码最大只能是 255
退出状态码被缩减到了0~255的区间。shell通过模运算得到这个结果。一个值的模就是被除
后的余数。最终的结果是指定的数值除以256后得到的余数。在这个例子中,指定的值是 300 (返
回值)
,余数是44,因此这个余数就成了最后的状态退出码