Linux之shell脚本学习(二)——变量

一、shell脚本中变量的定义

(1)变量即在程序运行过程中它的值是允许改变的量。
(2)变量是用一串固定的字符来标示不固定的值的一种方法。
(3)变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息。
(5)在 shell 中变量是不能永久保存在系统中的,必须在文件中声明。

二、变量的种类

1、环境变量

环境级变量只在当前 shell 中生效, shell 关闭变量丢失

定义方法:

export A=1		##直接在命令提示符后面输入

Linux之shell脚本学习(二)——变量

2、用户级变量

用户级变量写在用户的骨文件中,只针对当前用户生效

定义方法:

用户变量 可以在用户家目录的.bash_file 文件中定义

vim ~/.bash_profile

export A=1

source ~/.bash_profile		##使变量生效

Linux之shell脚本学习(二)——变量

3、系统级变量

系统变量 可以在/etc/profile或者在/etc/profile.d/的以.sh结尾的文件中定义,也可以自己新建一个文件,将系统变量写在文件里

定义方法:

vim /etc/profile
export A=5

source /etc/profile

Linux之shell脚本学习(二)——变量

vim /etc/profile.d/test.sh

export A=6
source /etc/profile.d/test.sh

Linux之shell脚本学习(二)——变量

三、变量名称的规范

(1)变量名称中通常包含大小写字母,数字,下划线(不是必须)

(2)变量名称格式
示例:
WESTOS_LINUX
Westos_Linux
westoS_Linux

四、字符的转译及变量的声明**

1、转义

\		##转译单个字符
""		##弱引用,批量转译 "" 中出现的字符
''		##强引用,批量转译 '' 中出现的字符

注意:
'' 与 "" 两者的区别在于, "" 不能转译 "\","`","!","$"

2、变量的声明

例如:

${}

Linux之shell脚本学习(二)——变量

五、变量值传递

$1 脚本后的第一串字符串
$2 脚本后的第一串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@ 脚本后跟的所有字符串,模式为“1” “2” “3”

Linux之shell脚本学习(二)——变量

$*与[email protected]的差别

[[email protected] mnt]# vim test1.sh
[[email protected] mnt]# cat test1.sh 
#!/bin/bash
for i in "$*"
do
	echo $i
done

for i in "[email protected]"
do
	echo $i
done
[[email protected] mnt]# sh test1.sh 1 2 5
1 2 5
1
2
5

Linux之shell脚本学习(二)——变量
分析:
[email protected] $* 只在被双引号包起来的时候才会有差异

双引号括起来的情况:
$*将所有的参数认为是一个字段
[email protected]将所有的参数视为每一个字段,分别执行操作

用 read 实现变量传递

•   read redhat					##执行脚本时将键入的字符赋给redhat变量
•   read -s redhat1				##执行脚本时将键入的字符赋给redhat1变量,不同的是键入时是不回显的
•	read -p "input: " redhat2	##执行脚本时,显示提示语,键入字符给redhat2变量

Linux之shell脚本学习(二)——变量

六、linux 系统中命令别名的设定

alias zhao='vim'

vim ~/.bashrc		##命令设置别名,只对.bashrc文件所在家目录的所有者生效
alias zhao='vim'
source ~/.bashrc

vim /etc/bashrc		##命令设置别名,对系统中的所有用户生效
alias zhao='vim'
unalias zhao			##取消别名zhao
source /etc/bashrc

Linux之shell脚本学习(二)——变量
Linux之shell脚本学习(二)——变量

七、利用命令执行结果设定变量

示例:

vim test.sh

DATE=$(date)
echo $DATE

sh test.sh

Linux之shell脚本学习(二)——变量
注意:

Hostname=$(hostname)
Hostname=`hostname`

这两种的表示方式都可以

$?

$? 是命令在执行完成之后产生的退出值,范围是 [0-255]
当 $?=0 时标示命令执行没有错误输出,这个值可以用 exit 命令执行 .

Linux之shell脚本学习(二)——变量
Linux之shell脚本学习(二)——变量

八、脚本中的函数

脚本中的函数时把一个复杂的语句块定义成一个字符串的方法

示例:

#!/bin/bash
USER_CREATE()
{
        read -p "Please input you create username: " user_name
        id $user_name &> /dev/null && {
        echo This user is exist!!!
        exit
        } || {
        useradd $user_name &> /dev/null
        echo $user_name is create!!!
        }
}

USER_CREATE
read -p "Please input $user_name is password: " passwd
echo $passwd | passwd $user_name --stdin &>/dev/null && {
echo $user_name's passwd set successfully!!!
}

Linux之shell脚本学习(二)——变量