shell入门——变量

变量的定义

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

在shell脚本中变量的种类

在shell中变量分为环境级变量,用户级变量,系统级变量
环境级变量只在当前shell中生效,shell关闭变量丢失
用户级变量写在用户的骨文件中,只针对当前用户生效
系统级变量被写在系统的配置文件/etc/profile或者/etc/profile.d/ 中,对于所有用户都生效

shell脚本中变量的定义方法

环境级
	export A=1
用户级
	vim ~/bash_profile
 	export A=1
系统级
	vim /etc/profile
	export A=1

环境级只在当前环境生效
用户级针对设定用户生效,其他用户不生效
全局变量对所有用户和环境都生效

在用户家目录下
ls -a
在这里插入图片描述

.bash.rc		是用户的shell环境变量
.bah_profile		用户变量
在.bashrc文件中写入
export a=1

在这里插入图片描述
在这里插入图片描述

直观查看 su 和su - 的区别
在这里插入图片描述
上图分析:
在用户的shell环境变量加入 a=1
输出a可以输出
Su student 切换到student用户
可以输出a,因为su切换是无交互的切换方式,只改变了用户身份,但没有改变环境,此时他的环境还是root的shell环境
Su - 不仅切换用户也切换环境,因为student的用户环境没有a的值

变量名称的规范

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

变量名称格式

	WESTOS_LINUX
	Westos_Linux
	westoS_Linux

字符的转译及变量的声明

字符 作用
\ 转译单个字符
" " 弱引用,批量转译""中出现的字符,
’ ’ 强引用,批量转译’'中出现的字符
’ '与" " 两者的区别在于,"“不能转译”","`","!","$"
${} 变量声明
例如:
	A=1
	echo $Ab
	echo ${A}b

在这里插入图片描述

变量值传递

字符 作用
$0 脚本的名称
$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的哥数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@ 脚本后跟的所有字符串,模式为“1”“2”“3”
$$ 进程的pid

实验展示
写一个脚本,如下图
在这里插入图片描述
在这里插入图片描述

可以看出 0 0 是脚本名称 再看 $的作用
在这里插入图片描述
在这里插入图片描述

用read实现变量传递

read 			WESTOS
read -s  		WESTOS
read -p "input: "	WESTOS

在这里插入图片描述
在这里插入图片描述

参数 -s 不回显输入
在这里插入图片描述
在这里插入图片描述
为了结果更直观,加入一个空行
在这里插入图片描述
在这里插入图片描述

linux系统中命令别名的设定

alias xie='vim'
vim ~/.bashrc		编辑用户级别名
	alias xie='vim'
vim  /etc/bashrc		全局别名
	alias xie='vim'
unalias xie			取消别名(先在文件中删除)

在这里插入图片描述
在这里插入图片描述

变量的引用
两种方式

   $()		适用于shell中
  ` `	适用范围更广

在这里插入图片描述
写一个perl脚本(暂不用管这个脚本,只是演示两个的区别)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述

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

Host_Message()
{
		read -p "Please input you action: " Action
		[ "Action"  ==  "exit" ] && exit 0
		[ "Action"  == "user"]&&echo You are $USER
		[ "Action" == "hostname" ]&& echo $HOST
		Host_Message
}
Host_Message

猜你喜欢

转载自blog.csdn.net/zhaoliang_Guo/article/details/91791861
今日推荐