Shell运行程序有多种方法,这里介绍3种方法
1. ./xx.sh,和运行二进制可执行程序一样,这样运行shell要求shell程序必须有可执行权限。
2. Source xx.sh source是Linux一个命令,这个命令就是用来执行脚本程序的,这样运行不需要脚本具有可执行权限。
3. Bash xx.sh 这个bash你可以理解成脚本语言的解释器。本质上是一个可执行程序,这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给它
shell程序的第一行一般都是 #!/bin/sh这一行话以#!开头,后面加上一个路径,这个/bin/sh就是我们的解释器,这行话的意思就是指定shell程序执行时被哪个解释器去执行。所以我们在这里写上这个/bin/sh意思就是这个shell将来被当前机器中的/bin目录下的sh可执行程序执行
你可以指定别的,比如说把它写成#!/bin/bash来指定使用的解释器
脚本中使用注释使用# 如果有多行需要需要注释,每行前面都需要一个#
Shell中的变量定义和应用
(1)变量的定义和初始化。Shell是弱类型语言(语言中的变量如果是有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要指定类型,也没有类型这个概念
例子如下
上面的例子体现了变量的定义 初始化 和引用
变量定义时可以初始化,使用=可以给变量初始化进行赋值。注意赋值两边不能有空格,和C不一样。shell对语言非常严格,对有些地方空格必须有,有些地方必须没有
而且不能随意有没有空格
(2)变量的赋值
变量定义后可以再次赋值,新的赋值可以覆盖老的赋值。
(3)在我们shell中引用一个变量,必须使用$符号,这个符号就是变量解引用符号
注意:$后面跟一个字符串,这个字符串就会被当作变量去解析,如果这个字符串本身没有定义,执行时并不会报错,而是把这个变量解析为空,
也就是说shell里面没有定义shell变量就相当于定义赋值为空的变量
在shell中直接使用字符串可以不加“ ”,而且有空格时也可以,但是缺陷是不能用来输出"或者其他的转义字符,但是双引号可以
在shell中也可以使用单引号来表示字符串,但是是完全字母替换
在shell中调用Linux命令
1.直接调用,比如直接写mkdir xxx
2.用引号扩起来执行,有时候我们在shell中调用linux命令是为了得到这个命令的返回值(结果值),这时候就适合用一对反引号(就是我们键盘esc下面的那个按键,和~在一个按键上)来调用执行这个命令
这里就会输出你当前路径。
shell中的选择分支
shell中的典型的if语言格式
if [表达式];then
xxx
else
xxx
fi
注意变量引用的时候可以使用$var,也可以${var},这两个的区别就是在某些情况下只能用${var} 而不能用$var
例子程序
for循环和while循环看下面的例子
echo 创建和追加输入文件
(1)在shell中可以使用echo 指令新建一个文件,并且将一些内容传入这个文件中
比如 echo "abc" > 1.txt
这行指令的意思是在当前目录下创建一个a.txt文件,然后把双引号里面的字符串写到1.txt里面去
(2)向已经创建的文件里面追加几行
比如 echo "abc" >> 1.txt