Linux shell 变量

来源:互联网 发布:很温暖的小说知乎 编辑:程序博客网 时间:2024/06/05 05:07

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@" 会将各个参数分开,以"12" … "$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 name2echo $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"
原创粉丝点击