Linux shell 变量
一.变量
1.1 预定义的变量
BASH_VERSION: 版本号
…
1.2 特殊参数变量
(1)
(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)
共同点:
都以”
实例
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 #输出:
–
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"