欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Linux shell 变量实例讲解

程序员文章站 2022-03-19 20:53:37
Linux shell 变量 一.变量 1.1 预定义的变量 BASH_VERSION: 版本号 … 1.2 特殊参数变量 (1)?:由1开始参数扩展...
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"