一、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 myUrl5.删除变量
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} #43.截取字符串
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 :<<' 注释内容 '