Linux shell 变量实例讲解
一.变量
1.1 预定义的变量
BASH_VERSION: 版本号
…
1.2 特殊参数变量
(1)?:由1开始参数扩展
(2)@ : 与?相同,不同点单独介绍
(3)# : 传递到脚本的参数个数
(4)$$ : 当前Shell进程ID
(5)$0 : Shell脚本名称
用法
17 echo "The shell name is : " $0 18 echo "The shell id is : " $$ 19 20 POS1="$1" 21 POS2="$2" 22 POS3="$3" 23 24 echo "argnumber = " $# 25 ######### first ######## 26 echo "first : $1" 27 echo "POS1 = " $POS1 28 echo "@ = $@" 29 30 ######## Second ######## 31 32 echo "Second : " $2 33 echo "POS2 = " $POS2 34 echo "@2 = " $@ #打印所有输入参数 35 echo "*2 = "$*"" #打印所有输入参数 36 PATH=/home 37 PATH=$PATH:/usr:/bin #export PATH=$PATH:/usr:/bin #PATH=$PATH以前设置的路径
(6)?与@ 区别:
共同点:?和@ 都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,
都以”1""2” … “n”的形式输出所有参数。不同点:当它们被双引号(”“)包含时,”*" 会将所有的参数作为一个整体,以"12 … n”的形式输出所有参数;“@" 会将各个参数分开,以"1”“2" … "$n” 的形式输出所有参数。
实例21 echo "-- \$* 檬?---" 22 for i in "$*"; do 23 echo $i 24 done 25 26 echo "-- \$@ 檬?---" 27 for i in "$@"; do 28 echo $i 29 done输入1 2 3 #输出:
– ?演示—123–@ 演示 —
1
2
3
1.3 读取用户信息
read : 读取stdin中的变量,赋值给右边
read name1 name2 echo $name1;echo $name
1.4 单引号与双引号
(1)单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
(2)双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
实例29 tt=5 28 name='Liujl,$tt' 29 str="hello,I know you are \"$name\"!,$tt\n" 30 echo $str输出
hello,I know you are “Liujl,$tt”!,5\n
2.1 字符串
(1)拼接字符串
3 name="Liujl" 4 str1="hello,"$name"" 5 str2="hello,$name" 6 echo $str1 $str2
(2)获取字符串长度
8 echo ${#str1} #输出9
(3)提取子字符串
10 echo ${str1:0:5} #输出 hello
(4)查找子字符串的位置
12 echo expr index "$str1" L #输出7
二. 数组
1.1 数组的定义
数组名=(value0 value1 …)
列如:
(1) array_name=(value0 value1 value2 value3)
(2) array_name=(
value0
value1
value2
value3
)
(3) array_name[0]=value0
array_name[1]=value1
…
array_name[n]=valuen
实例14 array=(apple pear banana) #三种定义方式 15 array1=( 16 apple1 17 pear1 18 banana1 19 ) 20 array2[0]=apple2 21 array2[1]=pear2 22 array2[2]=banana 23 24 read n 25 26 echo ${array[n]} #输出第 n 个元素 27 echo ${array1[n]} 28 echo ${array2[n]} 29 echo ${array2[@]} #输出数组中所有元素 30 31 length=${#array[*]} #数组长度 32 length1=${#array[@]} #数组长度 33 arg_len=${#array[n]} #数组单个元素长度 34 35 echo "length = $length" 36 echo "length1 = $length1" 37 echo "arg_len = $arg_len"