shell脚本中的变量

什么是变量(变量的定义)

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

在shell脚本中变量的种类

在shell中变量分为环境级变量,用户级变量,系统级变量

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

shell脚本中变量的定义方法

环境级
	export A=1 ##不能仅仅给A赋值 需要声明它在整个shell环境中A=1
用户级
	vim ~/.bash_profile ##在用户的骨文件中 编辑声明
 	export A=1
 	source  ~/.bash_profile 
系统级
	vim /etc/profile ##在系统的配置文件中 编辑声明
	export A=1
	source /etc/profile

查看用户家目录下内容

.bashrc		是用户的shell环境变量
.bash_profile		用户变量

用户的shell环境变量可以直接在当前shell中进行声明 也可以在.bashrc文件中写入声明

环境级变量
在当前shell环境先声明A的数值 su - 切换用户之后回加载的是该用户的shell环境 环境发生变化
在这里插入图片描述

用户级变量

vim ~/.bash_profile ##在用户的骨文件中 编辑声明
export  westos=1

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

系统级变量

vim /etc/profile ##在系统的配置文件中 编辑声明
export  westos=2

切换用户 该系统级变量依旧生效

在这里插入图片描述

bash打开了一个新的shell
env查看系统中的变量

su 与 su - 的区别

su - 切换了用户身份 shell 以及该环境中的变量
su 只是切换了用户身份 没有切换当前的shell环境 以及环境当中的变量

在这里插入图片描述
在这里插入图片描述
变量名称的规范

变量不能以符号开头,通常包含字母,数字,下划线(不是必须)

变量名称格式

WESTOS_LINUX
	Westos_Linux
	westoS_Linux

字符的转译及变量的声明

字符作用
\转译单个字符
" "弱引用,批量转译""中出现的字符
’ ’ 强引用批量转译’'中出现的字符
’ '与" "两者的区别在于,弱引用不能转译 \, ` , ! , $
${ }变量声明

转译单个字符
在这里插入图片描述
强弱引用
在这里插入图片描述
变量声明

在这里插入图片描述

变量值传递

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

在这里插入图片描述

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

用read实现变量传递

read  -p "xxxx: "        -s  		WESTOS ##-s隐藏输入的内容
read -p "xxxx: "	WESTOS

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

在这里插入图片描述
在这里插入图片描述
Linux系统中命令别名的设定

ls其实也是系统中的一个别名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

alias xie='vim'
环境级别名
alias xie='vim'
用户级别名
vim ~/.bashrc		
alias xie='vim'
source ~/.bashrc
系统级别名
vim  /etc/bashrc		
alias xie='vim'
source   /etc/bashrc		

unalias xie 取消别名(先在文件中删除,然后在shell中运行该命令)

环境级
在这里插入图片描述
执行xie命令之后出现的
在这里插入图片描述

用户级
在这里插入图片描述
切换用户之后不生效了
在这里插入图片描述
系统级
在这里插入图片描述
切换用户之后依旧生效
在这里插入图片描述取消别名

在这里插入图片描述
变量的引用

两种方式

   $( )		适用于shell中perl语句不识别
   ` `	适用范围更广

在这里插入图片描述
vim west.pl
在这里插入图片描述
在这里插入图片描述

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

命令执行结束后的退出值$?

当一个进程执行完毕时,该进程会调用一个名为_exit的例程来通知内核它已经做好"消亡"的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。
我们执行echo $?时返回的值就是进程的退出码,而且,这个退出码是由刚刚执行完的进程提供给系统内核的。

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

在这里插入图片描述
在这里插入图片描述
执行命令之后
在这里插入图片描述
脚本中的函数

脚本中的函数是把一个复杂的语句块定义为一个字符串的方法,然后每次想使用某个功能的时候,直接调用函数。
通过使用函数可以提高程序的可读性和重用性,避免重复编写相同的代码

我们来写一个脚本演示
要求:在执行脚本user.sh时,输入用户名,如果该用户不存在建立并设定密码,如果该用户存在,要继续输入用户名,如果输入exit退出

#!/bin/bash
USER ()
{
        read -p "please input username:" WORD
        [ "$WORD" = "exit" ]&&{
                echo Bye
                exit 0
        }

        useradd $WORD &> /dev/null && {
        read -p "please input passwd:" -s PASSWD
        echo $PASSWD | passwd --stdin $WORD &> /dev/null
        echo ""
        echo "This user alreadly set!"
        } || {
                echo "$WORD is exit"
                }

USER

}
USER

验证:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值