使用多个命令
一个命令行使用多个命令用 分号(;)隔开
创建shell脚本
#!/bin/bash
井号(#)用作注释行,shell并不会shell脚本中的注释行。然而shell脚本文件的第一行是个例外,#后面的!会告诉shell用哪个shell来运行脚本
显示消息 echo命令
echo可以用单引号或者双引号来划定文本字符串,双引号可以引用变量,单引号不可以。
$echo 'Rich says "scripting is easy".'
Rich says "scripting is easy".
如果想把文本字符串和命令输出到同一行可以用-n参数
$echo -n "The time and date are : " ; date
变量
用户变量有数字字母下划线组成,长度不超过20,区分大小写
引用变量使用美元符号$
#!/bin/bash
var1=30
echo $var1
输出
30
要引用$符号需要加上 ‘’
$echo "The cost of the item is \$15"
引用变量的值需要使用 符 号 , 但 是 引 用 变 量 对 其 进 行 赋 值 则 不 要 使 用 符号,但是引用变量对其进行赋值则不要使用 符号,但是引用变量对其进行赋值则不要使用符号
#!/bin/bash
var1=30
var2=var1
var3=$var1
echo "var2 is $var2, var3 is $var3"
输出
var2 is var1, var3 is 30
命令替换
两种方法:
方法一:反引号字符(`)
方法二:$()格式
#!/bin/bash
date1=`date`
date2=$(date)
echo "date1 is : " $date1
echo "date2 is : " $date2
输出
date1 is : 2020年 06月 21日 星期日 14:44:16 CST
date2 is : 2020年 06月 21日 星期日 14:44:16 CST
重定向输入和输出
输出重定向
格式: command > outputfile
追加数据: comman >> outputfile
输入重定向
格式:command < inputfile
内联格式: command << inputfile #必须指定一个文件标记来划分输入数据的开始和结尾
$wc << EOF
>test string 1
>test string 2
>test string 3
>EOF
结果为:
3 9 42
管道
格式:command1 | command2
管道最流行的用法之一是将命令产生的大量输出通过管道传递给more命令
$apt list --installed | sort | more
执行数学运算
expr命令(不做介绍)
使用[],仅支持整数运算
$var=$[1+2+3*1+8/2]
$echo $var
输出
10
浮点数
bash计算器(bc)
bc能够识别:数字(整数和浮点数)、变量(简单变量和数组)、注释(#开头或者/**/)、表达式、编程语句、函数
在命令行中使用bc
$bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
退出时输入quit
在shell中使用bc
可以用命令替换运行bc命令,格式如下:
variable=$(echo “options; expression” | bc)
options:允许设置变量,可用 ’ ; ’ 隔开
expression:数学表达式
#!/bin/bash
#scale=4 表示保留4位小数
var=$(echo "scale=4; 3.14159 / 3" | bc)
echo The answer is $var
输出
The answer is 1.0471
bc与输入重定向
格式:
variable=$(bc << EOF
options
statements
expressions
EOF
)
EOF标记了内联重定向数据的起止
#!/bin/bash
var1=3.14
var2=1.1
var3=$(bc << EOF
scale=4
a1=($var1+$var2)
a2=($var1*var2)
a1+a2
EOF
)
输出
The answer is 4.24
退出脚本
使用$?查询退出码,按照惯例,一个成功的命令退出码是0,范围(0~255)
$date
2020年 06月 21日 星期日 15:32:01 CST
$echo $?
0
错误退出码
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效的退出函数 |
128+x | 与linux信号x相关的严重错误 |
130 | 通过ctrl+c命令种植的命令 |
255 | 正常范围之外的退出码 |
exit命令允许在脚本结束时指定一个退出状态码
#!/bin/bash
var1=10
var2=30
var3=$[$var1+$var2]
exit $var3
执行命令
$./test.sh
$echo $?
40