shell script语法

1.1基本语法

#!/bin/bash   #指定用于执行的shell
#function description  #功能描述
#parameters   #参数说明等
echo -e “hello, world\n”   #在终端上输出hello, world

1.2  变量相关

赋值操作

var=hello   解引用 用 $var,如echo $var 将输出hello

declare可以定义变量的类型,如declare –i integerA ,如果把不合理的内容赋给变量的话,那么变量integerA会被设置成0

环境变量:

export 设置环境变量,可以在子shell 中生效(作用就是用于父shell向子shell传递变量)

如export envVar=hello,则其在当前shell及子shell中可见

取消定义的话用unset envVar,且只能在当前shell中取消,子shell中无法取消

查看环境变量的可以通过:env 或set (可列出值) 

间接引用:

var1=var2
var2=hello
echo ${!var1}  #这个会输出hello
eval temp=\$$var1;  echo $temp

与用户交互命令:

读取输入:read –p “commemt” var   #输入var的值前输出提示信息

变数:

$0 $1 $@ $* $?等, shift 命令可以进行变量偏移

1.3  判断式:

1) test 命令

option 如下:

A.   判断文件类型相关:

-d 是否是目录

-f 是否是文件

-e 是否存在

B.   判断权限相关:

-w 是否可写

-r 是否可读

C.   两个文件的关系判断:

-nt (new than)

-ot (old than)

D.   整数大小判断:

-eq  -ne –gt –lt –ge –le  #equal, notequal, greater than, less than, greater than or equal, less than or equal

E.   字符串判断:

test -z string   字符串是否为0

test -n string   字符串是否非0

test str1 = str2 是否相等  #这是= 与== 含义一样

test str1 != str2 不相等

p.s: 进行字符串判断的话最好带双引号

2) []

[]与test是等价的,即test –z string <==> [ -z string ] #注意[]两边要有空格

3) 多重判断(与或非)

 -a–o  ! #也要有空格,如[ ! –f file ], 表示文件不存在

1.4  条件判断:

1) if语句

if [ condition ];then  
else 
fi

#可使用逻辑运算符&& || !,如[ “$str1”== a –a “$str2” == b]  <==> [ “$str1”== a] && [ “$str2” == b]

if [ condition1 ];then  
elif [ condition2 ];then 
else
fi

2) case 语句

case $var in
context1)  #context建议用双引号括起来,关键词则为双引号
    dosomething
    ;;   #这边是两个”;”
context2)
    dosomething
    ;;
*)          #相当于default
    dodefault;
    exit1
    ;;
esac

 注意:context1满足了,就不会执行下面的了

1.5  循环

1)  while循环

whie [ condition ]
do
    dosomething
done
表示当条件满足时就do something

2)  dountil循环

until [condition ]
do
    do something
done

表示当条件不满足时就do something

3)  for循环

形式1:

for varin con1 con2 con3
do
    do something
done

相当于java或c++11中的foreach语句,表示第一次var取con1,第二次去con2,以此类推。

形式2:

for((initial value; condition ; steps))  #如for (i=0;$i<100;i++)  #i<100 or $i<100  both ok
do
    do something
done

1.6  函数

function fname ()
{
    echo$0;   #将输出bash
}

注意如果写在同一行的话{}两边要有空格,另外function关键字可省略

小技巧:

    function中的return语句只能返回255之内的整数,那函数怎么返回字符串?

    ans:用echo str形式即可,例子如下:

function fname ()
{
    echo hello;
}

如何执行函数呢,把他当成向ls之类的命令使用就可以了

str=$(fname)   or  str=`func`   bothok !  则str=hello;

1.7  执行shellscript

source test.sh  同 .test.sh   表示在当前shell上执行

sh test.sh  ./test.sh 则会重开一个子shell执行程序

sh –nvxscript.sh

-n 仅检查语法,不实际执行script

-v 执行script前,先将script的内容输出到屏幕上

-x 将使用到的script内容显示到屏幕上  #执行到的语句才会输出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值