shellNote
day4
-
使用多个命令
shell可以将多个命令串起来执行,每个命令间用分号;隔开;
-
date命令
显示当前日期和时间;
-
who命令
显示当前是谁登入了系统;
-
shell脚本文件
#用作注释行,第一行例外;
#!用来告诉哪个shell来运行脚本;
使用bash shell为
#!/bin/bash
; -
显示消息–echo
echo命令,后面加上一个字符串,该命令就能显示处这个文本字符串;
默认情况下,不需要引号;
也可用单引号或双引号来划定字符串;
echo This is a test
echo "you're good"
echo 'rich say "scripting is easy"'
-
-n参数
将文本字符串和命令输出显示在同一行中;
-
-
环境变量
在脚本中,可以在环境变量名称之前加上美元符$来使用环境变量;
在字符串中也可以使用;
字符串中真的显示$,需要在$之前加转义字符\$;
-
用户变量
shell中可以自定义变量;
使用等号将值赋给用户变量时,变量,等号,值之前不能出现空格;
用户变量也是通过$来引用;
-
命令替换
从命令输出中提取信息,并赋值给变量;
两种方法将命令输出给变量:
-
反引号字符`
testing=`date`
-
$()格式
testing=$(date)
-
-
输出重定向–>和>>
将命令的输出发送到一个文件中,用大于号>来完成;
command > outputfile
如果文件存在,将覆盖文件中的内容;
如果不想覆盖,可以用>>来追加数据;
-
输入重定向–<和<<
将文件的内容重定向到命令,用小于号<来完成;
command < inputfile
另外一种叫内联输入重定向,不需要文件,只需要在命令行指定输入重定向的数据即可,使用<<;
command << marker date marker eg: $wc <<EOF > test str1 > test str2 > EOF
-
wc命令
可以对数据的文本进行计数,默认输出3个值;
-
文本的行数
-
文本的词数
-
文本的字节数
-
-
管道–|
将命令的输出作为另一个命令的输入,可以通过管道来完成;
command1 | command2
-
数学运算
-
expr命令
允许在命令行上处理数学表达式;
不太好用;
-
使用方括号
$[ opration ]将数学表达式围起来;
不过只支持整数运算;
-
bc计算器
可以计算浮点运算;
浮点运算有scale控制,保留的小数的位数;
-
脚本中使用bc
variable=$(echo "options; expression" | bc)
options允许设置变量,用分号隔开;
expression定义执行的数学表达式;
var=$(echo "scale=4; 3.44/5" | bc)
还可以:
variable=$(bc << EOF options statements expressions EOF )
eg:
#!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71 var5=$(bc << EOF scale = 4 a1 = ( $var1 * $var2) b1 = ($var3 * $var4) a1 + b1 EOF )
-
-
-
退出状态码
变量$?保存上一个已执行命令的退出状态码;
成功结束的状态码是0;如果有错误,状态码就是一个正数值;
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效的退出参数 |
128+x | 与linux信号x相关的严重错误 |
130 | 通过Ctrl+C终止的命令 |
255 | 正常范围之外的退出状态码 |
* exit命令
结束时指定一个退出状态码;
`exit 5`