在创建shell脚本文件时,必须在文件的第一行指定要使用的shell,其格式为:
#!/bin/bash
#注释
要想让shell找到test1脚本,只需采取以下两种做法之一:
将shell脚本文件所处的目录添加到PATH环境变量中
在提示符中用绝对或相对文件路径来引用shel脚本文件
显示消息
如果在echo命令后面加上了一个字符串,该命令就能显示出这个文本字符串。默认情况下不需要使用引号将要显示的文本字符串划定出来,但是有时在字符串中出现引号的话,就可以用单引号或双引号来划定文本字符串。可以将echo语句添加到shell脚本中任何需要显示额外信息的地方。如果想要把文本字符串和命令输出显示在同一行中,可以用echo语句的-n参数。
变量
在脚本中,可以在环境变量名称之前加上美元符($)来使用这些环境变量。除了环境变量,shell脚本还允许在脚本中定义和使用自己的变量,定义变量允许临时存储数据并在整个脚本中使用。用户变量可以是任何字母,数字和下划线组成的文本字符串。用户变量区分大小写。
使用等号将值赋给用户变量,在变量,等号和值之间不能出现空格。shell脚本会自动决定变量值的数据类型。
与系统变量类似,用户变量可以通过美元符引用。引用一个变量值时需要使用美元符,而引用变量来对其进行赋值时则不要使用美元符。
命令替换
有两种方法可以将命令输出赋给变量:
反引号字符(`)
$()格式
命令替换允许你将shell命令的输出赋给变量。 如testing=$(date)
重定向输入和输出
输出重定向
最基本的重定向将命令的输出发送到一个文件中。bash shell用大于号(>)来完成这项功能:
command > outputfile
如果输出文件已经存在了,重定向操作符会用新的文件数据覆盖已有文件。如果不想覆盖文件的原有内容,而是想要将命令的输出追加到已有文件中,这种情况下用双大于号(>>)来追加数据。
输入重定向
输入重定向和输出重定向正好相反,输入重定向将文件的内容重定向到命令,而非将命令的输出重定向到文件。输入重定向的符号是小于号(<): command < inputfile
如 wc < test6
wc命令可以对数据中的文本进行计数,默认情况下输出3个值:文本的行数,文本的词数,文本的字节数。
内联输入重定向:无需使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据即可,符号位(<<)。任何字符串都可以作为文本标记,但是在数据的开始和结尾文本标记必须一致。
命令格式为:
command << marker
data
marker
管道
将一个命令的输出作为另一个命令的输入。管道被放在命令之间,将一个命令的输出重定向到另一个命令中: command1 | command2 在Linux系统中,command1和command2会同时运行,并在内部将他们连接起来,在第一个命令产生输出的同时,输出会被立即送给第二个命令,数据传输不会用到任何中间文件或缓冲区。
执行数学运算
expr 命令:如expr 1 + 5
其中有些表达式需要用到转义符。
使用方括号:在bash中,在将一个数学运算结果赋给某个变量时,可以用美元符和方括号($[operation])将数学表达式围起来。
bash shell数学运算只支持整数运算,若要进行任何实际的数学运算,这是一个巨大的限制。
浮点解决方案
内建bash计算器,叫做bc
bc的基本用法:
bash计算器能够识别:数字,变量,注释,表达式,编程语句,函数。可以在shell提示符下通过bc命令访问bash计算器。通过quit命令退出bash计算器。
浮点运算是由内建变量scale控制的,必须将这个值设置为期望在计算结果中保留的小数位数。scale变量默认值是0,在scale值被设置之前,bash计算器的计算结果不包含小数位。-q命令行选项可以不显示bash计算器冗长的信息。
在bash计算器中创建的变量只在bash计算器中有效,不能在shell脚本中使用。
退出脚本
查看退出状态码:Linux提供了一个专门的变量 $? 来保存上个已执行命令的退出状态码。对于需要进行检查的命令。必须在其执行完毕后立即查看或使用 $? 变量,它的值会变成shell所执行的最后一条命令的退出状态码。一个成功结束的命令的退出状态码是0,如果一个命令结束时有错误,退出状态码是一个正数值。
exit命令:exit命令允许在脚本结束时指定一个退出状态码。