现在的位置: 首页 > 综合 > 正文

shell基础知识笔记

2017年09月09日 ⁄ 综合 ⁄ 共 2308字 ⁄ 字号 评论关闭

    对于shell的定义在此就不在此详述了,各个操作系统都有它自己的shell,想知道shell的类型可以使用命令echo $SHELL来查看,比如你有一个test.sh,你可以使用sh test.sh、source test.sh、chmod +x test.sh ./test.sh来执行shell脚本。

    1. 变量,分为系统变量、用户变量、环境变量

    

shell的系统变量
表示方法 描述
$n $1表示第一个参数....,大于10后要加括号
$# 命令行参数个数
$0 当前程序的名称
$? 前一个命令或者函数的返回值
$* 以参数1、参数2的形式保存所有参数
$@ 同上
$$ 本进程的PID
$! 上一个命令的PID

用户变量必须由字母数字及下划线组成,并且变量名的第一个字符不能为数字,变量名是大小写敏感的,特别要注意的是变量名和“=”之间不要有空格,“=”和赋值间也不要有空格,其赋值可以如下所示test=“hello”,引用变量使用${test}

 

    2. 条件测试,条件测试一般分为test测试和表达式测试,表达式测试永远整数值和字符串的测试操作,test测试包括文件状态测试、逻辑测试、字符串测试、数值测试,test的格式为test condition或者直接[ condition ],注意前后要有空格

    字符串比较有:

    str1 = str2  两个字符串相同结果为真          str1 != str2  两个字符串不相同结果为真,中间要有空格,例如,

     TMP1="HELLO" 

     TMP2="TEST"

     test ${TMP1} = ${TMP2}或者[ ${TMP1} = ${TMP2} ]

    算术比较

    expr1 -eq expr2    两个表达式相等为真                           expr1 -ne expr2  两个表达式不等为真

    expr1 -gt expr2    expr1大于expr2则为真                        expr1 -ge expr2  expr1大于等于expr2则为真

    expr1 -lt expr2     expr1小于expr2则为真                        expr1 -le  expr2  expr1小于等于expr2则为真

    文件测试

    -e file   文件存在则为真                                                   -r file   文件可读为真

   -d file   文件为一个目录为真                                             -w file  文件可写为真

   -f  file   是一个普通文件则为真                                         -x file   文件可执行为真

   -s file   文件长度不为0则为真                                           -o file   文件或者目录归真正用户所有

    逻辑操作

    !expr    逻辑表达式求反                                                     expr1 -a expr2  两个逻辑表达式与

    expr1 -o expr2 两个逻辑表达式或

 

    条件语句

    if [表达式] ;then

        语句

    elif [表达式];then

        语句

    else

       语句

    fi

    case语句

    case 变量 in

    str1)

    语句;;

    str2)

    语句;;

    *)

    语句;;

    esac

    循环语句

    for var in list;do

        语句

    done

 

    while 表达式;do

         语句

    done

 

    until 表达式;do

        语句

    done

 

    select item in itemlist;do   -- 如果没有提供itemlist则使用位置参数

        语句

    done

   

     shift语句,如果要向一个shell脚本传递信息,可以使用位置参数完成此功能,shift命令用来将命令行参数左右,也可以指定左移的位数,如shift n

 

    3. 函数,要定义一个shell函数,只需要简单的写出它的名字,然后是一对空括号,再把有关的语句放在一对花括号中即可

     function()

     {

          语句

     }

 

    4. 杂项命令

    break -- 从for/while/until循环中退出

    continue -- 跟C语言的作用一样

    exit n -- 以退出码n退出脚本运行

    return -- 函数返回

    export -- 将变量导出到shell,使之成为shell的环境变量

    set -- 为shell设置参数变量

    unset -- 从环境中删除变量或者函数

    read  -- 输入参数

    stty  -- 取消回显

 

     ``用在产生的结果不会再送给shell解释,而只作为赋值时直接使用,文本输出时与""配合使用;
    ()有在产生的结果还会再作进一步解释时,用与不用都可以,属于"脱裤子放屁"类型的,故除了提高程序可读性之外,一般不使用

    当然shell不止那么简单,这只是基础中的基础,shell可以与sed、awk、grep等一起使用,要能更熟练的使用shell来编写脚本还有很长的路要走。

抱歉!评论已关闭.