Shell脚本基础总结

1、  Shell脚本的执行方式

a)       sh命令执行:sh hello.sh

b)       给脚本文件添加执行权限,使用./命令执行:chmod 755 hello.sh   ./hello.sh

2、  Shell的基本元素

a)  #!/bin/bash 指出shell的类型,不指定的话默认是 /bin/sh

b)  注释:#注释内容

c)  变量:${变量名}

d)  控制:

3、  Shell中的特殊符号

a)  注释符#      除了#!/bin/bash里的#特殊

b)  美元符

变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来

c)  单引号  被引起的字符全部做普通字符,即全部原样

            echo ‘my $SHELL’

d)       双引号

引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。

e)       倒引号(数字1键旁边的那个键)

引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。

f)        反斜线

反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。

4、  Shell变量

a)       本地变量 (局部变量):只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。

本地变量 在用户现在的shell生命期的脚本中使用

变量名=

注意:

1)等号两边不可以有空格

2)取值包含空格,必须用双引号括起来

       3Shell变量可以用大小写字母,区分大小写

变量的声明和使用

1)变量是弱类型的(不用声明类型)

2)变量声明及赋值格式

     变量=值(等号两边不能有空格)

3)变量的引用

     $变量名  

     ${变量名}

 

b)       环境变量:可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATHHOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们 。还能在shell中加以修改。

u  环境变量可以在命令行中设置,但用户注销时这些值将丢失

u  环境变量均为大写

u  必须用export命令导出

(1)     设置环境变量

   variable-name=value

  export variable-name(环境变量名大写)

(2)     显示环境变量

  env 可以看到所有的环境变量

  echo $环境变量名 (显示一个变量)

(3)     清除环境变量

  unset 环境变量名

 

c)       内部变量:由系统提供的。与环境变量不同,用户不能修改它们。

$#——传送给shell程序的位置参数的数量

$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)

$0——shell程序的名称

$*——调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数

$@——“参数1”“参数2”…形式保存的参数

$n——第n个参数

$$——本程序的PID

$!——上一个命令的PID

5、  条件测试

可以判断脚本程序运行的状态

主要有三种形式:

a)       test expression

b)       [ expression ]

c)       [[ expression ]]

注意:

n  方括号的内侧两边各需一个空格

n  如果测试条件为真,test命令会返回0,否则返回一个非0的数值

n  test 语句与if/thencase语句一起,构成shell编程的控制转移结构 

区别test[[[

n  test[ bash命令。

n  [[ bash程序语言中的关键字。

n  [[ 中使用 && ||逻辑符号,可用通配符(使用通配符时字符串不要引号);

Expression

(1)       数值测试

-lt        小于         -le  小于等于         -gt  大于

-ge      大于等于     -eq   等于           -ne 不等于

(2)       文件测试

-f         存在且是普通文件

-d        存在且是目录

-s         存在且字节数大于0

-r         存在且可读

-w       存在且可写

-x         存在且可执行

(3)       字符串测试

test s                 字符串s非空

test s1=s2           字符串s1等于s2

test s1!=s2                   字符串s1不等于s2

test –z s         字符串长=0,即为空串

test –n s      字符串长>0

(4)       其他参数

-a        逻辑与

-o        逻辑或

       逻辑非

6、  控制流程

a)       分支语句:if-then-elsecase

if分支

 

if [ $# -eq 0 ]

then

   echo “输入了0个参数”

elif [ $# -gt 1 ]

then echo “输入了多个参数”

else echo “输入了1个参数”

fi

 

case

 

case “$#” in

   0) echo “输入了0个参数”   ;;

     1) echo “输入了1个参数”   ;;

       *) echo “输入了多个参数”;;

esac

每个分支条件后必须以两个分号结尾

                               一些比较有用的命令:

                                     seq命令:产生1-9的数字序列;

expr命令:将其后的串解释为表达式并计算其值,运算符前后需有空格;用于整数值运算。

$[]将中括号内的表达式作为数学运算先计算结果再输出。

let表示强制进行数学运算,以为系统默认“+”等运算符是作为字符串处理的。

let “a+=1"

a=$[ $a + 1 ]

a=$(($a+1))

a=`expr $a + 1`         #加号两边要有空格

                                     前两种方式在bash下有效,在sh下会出错。

b)       循环语句:for whileuntil

for 例子——输出10010的倍数

 

    for i in `seq 1  9`

    do

             echo `expr $i \* 10`

             done

 

read 变量1 [变量2 ]

可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。

如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;

如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。

while例子——求1100的和

i=1

sum=0

while [ $i –le 100 ]

do

    sum=$[$sum+$i]

  i=$[$i+1]

done

                                         echo $sum
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值