# 初识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