一、Shell的特点
一种高级程序设计语言,有变量、关键字、条件控制语句,如if、case、while、for这些语句。有自己的语法结构。
二、
1.查看系统使用的shell: echo $SHELL
2.查看shell的位置
cd/bin
三、执行shell脚本的方法
1、输入定向到shell脚本:bash < 脚本名
四、shell语法
1、特殊字符用法
星号*:匹配任意字符的出现
方括号[]:匹配括号内所限定的任何一个字符
双引号”:双引号括起来的字符作为普通字符对待;
例:
echo “my name is `pwd`”
`pwd`表示命令替换,输出当前目录
echo “my home is $HOME”
$HOME表示变量替换,输出home目录
echo “file*.?”
原样输出普通字符
单引号’:单引号括起来的字符都作为普通字符。
用“\”可以消除单引号的特殊含义。
倒引号``:命令替换符,被倒引号引起来的字符串shell解释命令行
例:today=`date`
Echo today is $today(此处today是变量)
注释#:shell将#看做注释符号,忽略#后的字符
2、定义变量
a. 变量名可以由数字,字符和下划线组成,但是变量名只能由字符和下划线开头,而不能是数字。
b. shell变量没有储存类和类型的限制,可以边定义边使用
c. 区分大小写
d. 变量赋值
a) 变量名=字符串
X=myshell
echo $x
b) 赋值号俩边没有空格
3、从键盘读入数据
a. 利用read命令
b. read 变量1 变量2
注意:如果变量个数与输入数据个数一致,则一一对应赋值,如果变量个数大于输入数据,则从开始一一对应,知道输入的最后一个,剩下的没有对应的变量为空。如果变量个数小于输入个数,则一一对应后剩下输入数据全部赋给最后一个变量
4、输入输出命令
echo -e “.......\c”不换行
echo -e “.......\f”进纸
echo -e “...\t....”表跳格
echo -e “.......\n”换行
echo -n “.........”禁止换行
-e 解释转义字符
5、shell系统变量
$0:当前程序名称
$n(1-9):$1 表示第一个参数,$2 表示第二个参数,以此类推
$#:命令行参数的个数,即传递给程序的总的参数数目
$?:上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$*:以“参数1 参数2 ... ” 形式保存所有参数,即传递给程序的所有参数组成的字符串
6、算数运算命令
a. let命令(当表达式中有shell的特殊字符时,必须用双引号将其括起来)
a=1
b=2
let c=a+b
echo $c
b. expr命令(运算符左右都有空格)
expr 10 + 10
expr 20 / 5
expr $a + $b
说明:字符*(乘)在shell中有特殊含义,因此他们的前面必须有转义字符“\”
如:expr 2 \* 5
当有变量参与运算时,需要在变量名前面加“$”
如:a=11
expr $a \% 2
7、控制结构
a. if语句
if…then…fi控制结构
if [ condition ]
then
commands
…
Fi
If…then…else控制结构:
if [ condition ]
then
true - commands
else
false - commands
Fi
If…then…elif控制结构:
if [ condition_1 ]
then
commands_1
elif [ condition_2 ]
then
commands_2
…
else
commands_n
fi
If语句必须用fi结束
条件外面的方括号[ ]必不可少,条件前后必须加空格。
b. 条件测试
Test 语句(可以代替if的方括号)
test是shell内部命令,它计算参数表达式的值为真还是为假。如果表达式为真,test返回0,否则,返回非0值。
if条件的一些判定大小命令
-eq:等于
-lt:小于
-le:小于等于
-gt:大于
-ge:大于等于
-ne:不等于
If条件逻辑命令
-a;相当于&&,“且”
-o:相当于||,“或”
c. 循环语句
while循环:while - do - done结构
while [ condition ]
do
commands
done
until循环:until - do - done 结构
until [ condition ]
do
commands
done
for循环:for - in - done结构
for variable in list - of - values
do
commands
done
for ((条件1; 条件2; 条件3))
do
命令表
done