shell环境使得用户能与操作系统的内核进行交互操作,shell脚本就是一些文件,我们将一系列需要执行的命令写入其中,通过使用某种基于解释器的编程语言,然后通过shell执行这些脚本。
在接下来的学习历程中,我使用的都是Bash,它是目前大多数Linux系统默认的shell环境。
1.shell脚本通常是以#!起始的文本文件,例如:
#!/bin/bash
/bin/bash 是bash解释器的路径,#!/bin/bash 意思就是使用bash作为shell脚本的解释器。
2.运行脚本的两种方式:
- 将脚本作为命令行参数
- 使脚本具有可执行权限
先举例第一种,新建firstScript.bash脚本,在文本中输入 echo Hello My First Script! 然后切换到脚本所在的根目录,终端执行:
bash firstScript.bash
终端输出 Hello My First Script!
可以看到脚本已经运行起来,并且按照我们的意愿输出了Hello My First Script!这句话。
但是,如果使用命令行参数的方法运行脚本,那么 #! 也就没有存在的意义了,为了让脚本能够独立运行,我们需要赋予脚本可执行权限,并且在脚本中使用#!来指定运行脚本所需的解释器。
打开我们的脚本文件,在首行输入#!/bin/bash
然后切换到脚本的根目录,终端执行:
chmod a+x firstScript.bash
该命令赋予了所有用户firstScript的可执行权限,使得脚本能以下面的方式运行:
./firstScript.bash
(./表示当前目录)
或者使用脚本的完整路径运行脚本:
/Users/bombuu/valie/firstScript.bash
3.终端打印:
终端作为交互式工具,用户可以通过它与shell环境进行交互,在终端中打印文本是绝大多数shell脚本需要进行的基本工作,能够执行打印的方法有:
- 使用echo基本命令
- 使用printf命令
默认情况下,echo在每次调用后都会添加一个换行符,而printf并不会自动添加换行符。
4.变量
脚本语言通常不需要在使用变量之前声明其类型,直接赋值即可。在Bash中变量的值都是字符串,在给变量赋值时不论有没有使用引号,值都会以字符串的形式存储。
变量赋值:
var=value
var是变量名,value是值
注意:var = value不同于var=value,前者是相等操作,后者才是赋值操作。打印变量的值:
echo $var
在变量名前加上$前缀就可以打印出变量的内容。获取字符串长度
${#var}
获取当前使用的shell类型
echo $SHELL
5.使用shell进行数学运算
- let命令可以直接执行基本的算数操作(变量名前不需要加$前缀)
num1=1;
num2=2;
let sum=num1+num2;
自加操作:let num1++
自减操作:let num1--
[ ] 操作符使用和let类似
sum=$[ num1 + num2 ]
在[ ]中也可以使用[ $num1 + 10 ]`使用( ( ) ) 进行操作时,变量名前需要加上(( num1 + num2 ))`
expr也可以用于基本算数操作:
sum=`expr 5 + 10`
sum=$(expr $num1 + 10)
以上方法只适用于整型,不支持浮点型!
6.使用bc进行数学运算的高级操作
echo "4 * 0.25"
=> 1.00
- 设定小数精度:
echo "scale=2;10/3" | bc
scale=2即保留两位小数,同时以分号作为定界符,将scale参数置于要执行的操作之前。 - 进制转换
num=3
echo "obase=2;$num" | bc
以上是将十进制转换成二进制。
- 计算平方根以及次方
echo "sqrt(100)" | bc
echo "10^3" | bc