Linux shell 变量

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() *" 会将所有的参数作为一个整体,以" 1 2 … 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"

猜你喜欢

转载自blog.csdn.net/a185531353/article/details/78618501