初识shell——shell脚本中的变量

1.变量的定义

1)定义
变量是计算机内存的单元(即变量就是内存中一片区域的地址),其中存放的值可以改变。当 Shell 脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在一个变量中。

2)变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题

2.shell脚本中变量的定义方式(三种)

1)环境级别
只对当前环境生效,在环境关闭后变量失效
赋值方式:export a=1
在这里插入图片描述

2)用户级别
只对某个用户生效,对其他用户不生效
vim ~/.bash_profile
export a=5
写完之后需要执行:source .bash_profile使得更改生效
在这里插入图片描述

3)系统级别
对某个系统生效,其他系统不生效
vim /etc/profile
export a=2

在/etc/profile.d目录下写一个子文件
vim /etc/profile.d/westos.sh
export b=3

4)变量名称
名称的组成元素:“字符”、 “_” 、“数字” ,但不能以数字开头。
建议: 变量名称短时全用大写字符,变量名称长时用 ” _“ 区分子类
例如:WESTOS、Westos_Linux、westoS_Linux

3.变量的转译

1) 变量的转译

\ 		#转译单个字符
"" 		#弱引用,批量转译特殊字符,但不能转译"\" "`" "$" "!"
'' 		#强引用,批量转移所有特殊字符

2)变量的声明

a=1
echo $ab
echo ${a}b

在这里插入图片描述
3)变量的数组

a=(1 2 3 4 5)	#定义一个数组
echo ${a[0]}	#输出数组的第一个字符
echo ${a[-1]}	#输出数组的最后一个字符(-2表示倒数第二个)
echo ${a[*]}	#输出数组的所有字符,所有字符是一个整体,相当于输出”1 2 3 4 5“
echo ${a[@]}	#输出数组的所有字符,每个字符都是单个的,相当于输出”1“ ”2“ ”3“ ”4“ ”5“

在这里插入图片描述
区别:echo ${a[* ]}和echo ${a[@]}
在这里插入图片描述
神奇的输出:
在这里插入图片描述

4.Linux中命令的别名设定

alias xie='vim' 	#临时设定

vim ~/.bashrc
alias xie='vim' 	#只针对某个用户生效
source ~/.bashrc

vim /etc/bashrc 	#针对系统所有用户生效,编辑shell的配置文件
alias xie='vim'
source /etc/bashrc

unalias xie 		#删除当前环境中的alias

练习:
执行命令sh create_user.sh userfile passfile
效果:
userfile里的用户会被全部建立
passfile中的密码会被全部设定到建立的用户

在这里插入图片描述

5.用户环境变量的更改

环境变量(environment variables):一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。默认情况下,执行命令时需要用命令的绝对路径或者./去执行。如果把命令放到设置了环境变量的目录中,则该命令可以直接用命令的名称去调用,而不需要加路径。

查看环境变量:echo $PATH

设定环境变量:
用户级的:
vim ~/.bash_profile
给文件中添加:
export PATH=$PATH:/mnt

source ~/.bash_profile

系统级的:
vim /etc/bash_profile
给文件中添加:
export PATH=$PATH:/mnt		
注意:$PATH是旧的环境变量的目录,/mnt是新添的环境变量的目录,
因此,$PATH一定要写,如果直接写/mnt会使得所有的环境变量只有/mnt目录,其他的目录就没了

source /etc/bash_profile

在这里插入图片描述
示例:系统级环境变量的设定
在这里插入图片描述

6.利用命令的执行结果设定变量

1)直接利用命令执行结果

$()|`` 				#优先执行
例如:
TEST=`hostname` 
或
TEST=$(hostname)

如:
在这里插入图片描述

2)脚本中的传参
将脚本之外的参数传递到脚本内部,如执行create_user.sh userfile passfile时,是将userfile和passfile文件中的内容传递到脚本之中去。

非交互模式:
$0 is /mnt/test.sh 	#脚本本身
$1 is weiwei 		#脚本后所输入的第一串字符
$2 is linux			#脚本后所输入的第二串字符
$3 is redhat		#脚本后所输入的第三串字符
$* is weiwei linux redhat 	#脚本后所输入的所有字符"weiwei linux redhat"
$@ is weiwei linux redhat 	#脚本后所输入的所有字符'weiwei' 'linux' 'redhat'
$# is 3 					#脚本后所输入的字符串个数

交互模式传参:
read WESTOS 					#对WESTOS赋值
read -p "please input word:" 	#输出提示语
-s 								#隐藏输入内容

非交互模式传参:
在这里插入图片描述
交互模式传参:
在这里插入图片描述

7.脚本函数

函数通俗理解:将脚本的程序模块写成一个字符串,然后调用该字符串就可以使用该模块。

定义:
程序的别名 设定方式:
WORD()
{
action1
action2
}
WORD就是函数,在脚本中就代表action1 action2这两个动作

举例:
在这里插入图片描述
结束!!!

猜你喜欢

转载自blog.csdn.net/weixin_46138661/article/details/105467938