# 初识shell脚本

#!/bin/bash
date
who

shell不会解释以 # 开头的行,但以#! 开头的第一行#后面的惊叹号会告诉shell用哪个shell来运行脚本。

可以将 echo 语句添加到shell脚本中任何需要显示额外信息的地方。

shell脚本会自动决定变量值的数据类型。与系统变量类似,用户变量可通过美元符引用。

有两种方法可以将命令输出赋给变量:

  • 反引号字符( ` )
  • $() 格式
#!/bin/bash
curDate=`date`
curDate=$(date)
who

>会重定向,>>会追加到原来文件上。

管道,|将一个命令的输出作为另外一个命令的输入。

rob@xx-rob:~$ ls | grep te
test.sh

# 数学运算

expr命令允许在命令行
上处理数学表达式。

expr 1+10
# 11

bash shell为了保持跟Bourne shell的兼容而包含了 expr 命令,但它同样也提供了一种更简单的方法来执行数学表达式。

在将一个数学运算结果赋给某个变量时,可以用美元符和
方括号( $[ operation ] )将数学表达式围起来

var1=$[1 + 5]
echo $var1 # 6

bash shell数学运算符只支持整数运算。如要使用浮点数运算,一种解决方案是使用内建的bash计算器bc

终端中使用方法:

rob@xx-rob:~$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

b=3./2.
b
1
scale
0
scale=1
b=3./2.
b
1.5

scale控制小数的位数,未设置时是0位,设置了之后才能展示期望的位数。终端退出bc使用quit

在脚本中可以用命令替换运行bc命令。

#!/bin/bash
var1=$(echo "scale=4; 3.44 / 5" | bc)
echo The answer is $var1

# rob@xx-rob:~$ ./test1
# The answer is .6880

# shell命令的退出状态码

Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码。

echo $?

无效命令会返回一个退出状态码 127

exit 命令允许你在脚本结束时指定一个退出状态码。退出状态码最大只能是 255 。超出将取256的余数。

#!/bin/bash
date
who
curDate=`date`
curDate=$(date)
echo "curDate: ${curDate}"
exit 100

./test.sh

echo $?
# 100
(adsbygoogle = window.adsbygoogle || []).push({});