一.查看用户Shell:
(1).使用命令cat /etc/shells 来查看/bin/目录下Ubuntu支持的Shell
(2).使用echo $SHELL命令查看当前用户的Shell
(3).其他用户的Shell,可以在/etc/passwd文件中看到,并且可以修改,但要具有超级用户权限
二.Shell脚本执行方式:
1.Shell脚本执行过程
Shell脚本是利用Shell的功能所编写的一个纯文本程序,将各类Shell命令预先放入到一个文件中,方便一次性执行的一个程序文件,方便管理员进行设置或者管理,它与windows下的批处理相似,一个操作执行多条命令。
2.Shell脚本执行方式:
1.直接命令执行
(1).直接命令执行
(2).使用文本编辑器编辑生成脚本文件
2.sh/bash [选项] 脚本名
打开一个子Shell读取并执行脚本中的命令。该脚本文件可以没有执行权限
sh/bash在执行脚本过程中。选项如下。
-n:不要执行script,仅检查语法的问题
-v:在执行script前,先将script的输出到屏幕上
-x:进入跟踪方式,显示所执行的每一条命令,并且在行首显示一个 + 号
3.source 脚本名
(1).在当前BASH环境下读取并执行脚本中的命令
(2).该脚本文件可以没有执行权限,执行的格式为source 脚本,或source ./脚本
三.Shell脚本变量
Shell脚本变量就是在Shell脚本程序中保存,系统和用户所需要的各种各样的值。Shell脚本变量可以分为:系统变量、环境变量、和用户自定义变量
1.系统变量:
Shell常用的系统变量并不多,但在做一些参数检测的时候十分有用
按键 | 命令 |
---|---|
$ # | 命令行参数的个数 |
$ n | 当前程序的第n个参数 |
$ 0 | 当前程序的名称 |
$ ? | 执行上一个指令或函数的返回值 |
$ * | 以“参数1参数2…” 形式保存所有参数 |
$ @ | 以“参数1”“参数2”的形式保存所有参数 |
$ $ | 本程序的(进程ID号)PID |
$ ! | 上一个命令的PID |
$ - | 显示Shell使用的当前选项,与set命令功能相同 |
2.自定义变量:
1.变量值的引用与输出
(1).引用变量时在变量名前加上$符合
(2).输出变量时用echo命令
(3).如果变量包含在其他字符串中,为了区分变量和其他的字符串,需要用{}将变量名括起来
2.变量的赋值的替换
(1).变量赋值的方式:变量名=值
注:给变量赋值的时候不能在“=”两边留空格
(2).重置就相当于给这个变量另一个值
(3.)清空某一变量的值可以使用unset命令
(4).变量可以有条件的替换,替换条件放在{}中
1.当变量未定义或者值为空时,返回值为value的内容,否则返回变量的值。其格式为${variable:-value}
2.若变量未定义或者值为空时,在返回value的值同时value赋值给variable。其格式为${variable:=value}
3.若变量已经赋值,其值才用value替换,否则不进行任何替换。其格式为${variable:+value},value替换variable
数组:
对数组进行声明,使用declare命令:
declare [+/-] [选项] variable
+/-:指定或关闭变量的属性
a:定义后面名为variable的变量为数组array类型
i:定义后面名为variable的变量为整数数字类型
数组的赋值:
在shell中,用括号来表示数组,数组元素用空格分隔开来
1.定义数组的一般形式为:
array_name=(v1 v2) //此时下标从0开始
2.还可以单数定义,可以使用不连续的下标,而且下标的范围没有限制
array_name[0] = v1
array_name[2] = v4
数组的读取:
${array_name[index]}
用${#数组名[@]}可以得到数组长度
shell的输入输出:
输入:read
输出:echo
if语句:
1.单分支if语句:
if: 条件测试命令
then
命令序列
fi
例:
#! /bin/sh
a=10
b=20
if [
a
=
=
a==
a==b]
then
echo “a is equal to b”
else
echo “a is not equal b”
fi
2.多分支语句用elif
while语句:
while [条件测试命令]
do
命令序列
done
for语句:
for 变量名 in 取值列表
do
命令序列
done
循环控制语句:break,continue
注:
1.编译.sh的shell脚本用 bash 文件名,C语言的文件需要先使用 gcc -g -o和./文件名
2.if和while后的条件花括号里面的代码和花括号之间必须有空格
3.判断等于一个等号就行
4.循环和判断后要有结束标志