shell编程笔记1

    科技2022-07-15  115

    一、Shell 变量: 1.定义变量时,变量名与等号之间不能有空格。

    your_name="runoob.com"

    2.除了显式得直接赋值,还可以用语句给变量赋值,

    for file in `ls /etc` or for file in $(ls /etc)

    3.使用定义过的变量,需要在变量前加美元符号,如:

    your_name="qinjx" echo $your_name echo ${your_name} ```{}帮助判断边界

    4.只读变量不能修改,也不能删除。

    myUrl="www.baidu.com" readonly myUrl

    5.删除变量

    unset variable_name

    二、变量类型 1)局部变量: 局部变量在脚本或者命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 2)环境变量:所有程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。shell脚本也可以定义环境变量。 3)shell变量:是由shell程序设置的特殊变量。shell中有一部分环境变量,一部分局部变量,这些变量保证了shell的正常运行。

    1.字符串 单引号、双引号,也可以不用引号。 单引号中字符串的变量无效,且不能包含任何单个的单引号。

    str='this is a string'

    双引号 中可以有变量,转义字符。

    your_name='runoob' str="Hello, I know your are \"$your_name\"!\n"

    拼接字符串

    your_name="runoob" #使用双引号拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 #output: hello, runoob ! hello, runoob ! #使用单引号拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2, $greeting_3 #output: hello, runoob ! hello, your_name !

    2.获取字符串长度

    str="6666" echo ${#str} #4

    3.截取字符串

    string="I have a big big dream!" echo ${string:1:4} #hav,字符串中第一个字符索引值为0 #从左边查找第一个//号,并删除该符号及其左边的所有字符 echo ${var#*//} #从左删除最后一个//号及其左边的所有字符 echo ${var##*//} #从右边删除第一个/号及其右边的所有字符 echo ${var%/*} #找到从右到左的最后一个出现的/号,删除该号以及该号右边的所有字符。 echo ${var%%/*} echo ${string:0:5}#从第一个字符开始的5个字符 echo ${string:7}#从第八个字符开始,一直到结束 echo ${string:0-7:3}#从右边开始的第7个字符开始的3个字符.(从左到右算起)

    4.查找子字符串 查找字符i或者o的位置(哪个字符先出现就计算哪个)

    string="runoob is a great site" echo `expr index "$string" io`

    5.定义数组

    array_name=(value0 value1 value2 value3) #or array_name=( value0 value1 value2 value3 #可单独定义数组的各个变量,且下标范围没有限制 array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen )

    读取元素值

    ${数组名[下标]} valuen=${array_name[n]}

    使用@符号可以获取数组中所有元素,

    #获取所有元素 echo ${array_name[@]} #获取数组元素的个数 length=${#array_name[@]} #or length=${#array_name[*]} #获取数组单个元素的长度 lengthn=${#arrat_name[n]}

    多行注释的格式

    :<<EOF 注释内容 EOF #or 用其他符号代替EOF :<<' 注释内容 '
    Processed: 0.010, SQL: 8