linux之Shell编程2:Shell的几种变量

目录

一、shell有两类变量:

1、临时变量

2、永久变量

二、两种特殊的变量

1、位置变量

2、特殊变量


一、shell有两类变量:

变量:是shell传递数据的一种方法,用来代表每个取值的符号名。

1、临时变量

临时变量:临时变量是shell程序内部定义的,其使用范围仅仅限于定义它的程序,对其他程序不可见。包括:用户自定义变量、位置变量。shell脚本程序中的变量都是临时变量。

自定义变量

linux之Shell编程2:Shell的几种变量_第1张图片

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ num=10
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo $num   #取出变量,变量尽量大写,小写也可以。
10

使用set可以查看系统中当前的所有变量,使用unset删除指定的变量。

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ unset num
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ 
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo $num   #没有啦,已经删除掉了。

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ 

eg:下面注意 等号两边不能有空格,以及单引号和双引号的区别。

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ STR="is string"
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo $STR
is string
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo "i am is string"
i am is string
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo "i am $STR"
i am is string
love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo 'i am $STR'
i am $STR

2、永久变量

永久变量:永久变量就是环境变量(例如java中的PATH),其值不随shell脚本的执行结果而消失。下面看一下永久变量,

eg:下面是当前环境变量。其中美元符合表示获取这个变量。

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo $PATH    
/home/love/bin:/home/love/.local/bin:/home/love/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

eg:下面便是当前计算机中liux操作系统的字符集: 

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ echo $LANG
en_US.UTF-8

二、两种特殊的变量

在shell里面还有2中特殊的变量,一种是位置变量,还有一种是特殊的变量,在我们变成shell的时候非常的有用,一定要熟悉他们。

1、位置变量

ls -l file1 file2 file3... (n范围=1-9)在代码里面使用$0-9进行替代。

eg:下面注意美元符号占位符。注意替换符号的打印是在键盘左上角1数字的左边那个键。

#!/bin/sh
DATE=`/bin/date +%Y%m%d`  #生成的一个局部变量,对其赋值,2个点是命令替换符,命令执行的结果赋值给DATE
echo "TODAY IS $DATE"	#获取DATE这个变量,会从上下文环境中去找。这里就是当前环境。
/bin/ls -l $1	#$1相当于占位符号,在执行这个脚本的时候要把这个东西补全。
/bin/ls -l $2
/bin/ls -l $3

运行脚本结果显示如下: 

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ sh demo3.sh  /usr /usr/local /home
TODAY IS 20190116
total 68
drwxr-xr-x   2 root root 36864 Jan 13 22:27 bin
drwxr-xr-x   2 root root  4096 Apr 13  2016 games
drwxr-xr-x  34 root root  4096 Jan  6 19:57 include
drwxr-xr-x  65 root root  4096 Jan  6 19:57 lib
drwxr-xr-x  12 root root  4096 Aug 31  2017 local
drwxr-xr-x   2 root root  4096 Jan  6 19:57 sbin
drwxr-xr-x 131 root root  4096 Jan  6 19:57 share
drwxr-xr-x   6 root root  4096 Sep  6  2017 src
total 40
drwxr-xr-x  6 root root 4096 Jan  8 16:32 aegis
drwxr-xr-x  2 root root 4096 Jan 13 22:27 bin
drwxr-xr-x 10 root root 4096 Jan  6 19:29 cloudmonitor
drwxr-xr-x  2 root root 4096 Feb 16  2017 etc
drwxr-xr-x  2 root root 4096 Feb 16  2017 games
drwxr-xr-x  2 root root 4096 Feb 16  2017 include
drwxr-xr-x  4 root root 4096 Aug 17  2017 lib
lrwxrwxrwx  1 root root    9 Aug 17  2017 man -> share/man
drwxr-xr-x  2 root root 4096 Feb 16  2017 sbin
drwxr-xr-x  9 root root 4096 Jan  6 19:57 share
drwxr-xr-x  2 root root 4096 Feb 16  2017 src
total 8
drwxr-xr-x  4 admin admin 4096 Jan  6 19:30 admin
drwxr-xr-x 11 love  love  4096 Jan 16 15:03 love

2、特殊变量

linux之Shell编程2:Shell的几种变量_第2张图片

eg:应用上面的命令。

#!/bin/sh
DATE=`/bin/date +%F`
echo "today is $DATE"
echo '$# :' $#
echo '$* :' $*
echo '$? :' $?
echo '$$ :' $$
echo '$0 :' $0
echo '$1 :' $1
echo '$2 :' $2

运行脚本结果显示如下: 

love@iZuf69ps3de0b3n4a50j7nZ:~/shelldir$ sh demo4.sh /aa /bb /cc  #其中$1第一个参数/aa,/bb
#为第2个参数,demo.sh为第一个参数,/cc为第三个参数。
today is 2019-01-16
$# : 3
$* : /aa /bb /cc
$? : 0
$$ : 32300
$0 : demo4.sh
$1 : /aa
$2 : /bb

 

你可能感兴趣的:(Linux,Ubuntu,Linux)