shell脚本的变量

变量的定义
变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来表示不固定的值的一种方法
变量是一种方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息
在shell中变量时不能永久保存在系统中的,必须在文件中声明
变量的种类
环境级 export a=1 在系统关闭后就会失效
用户级 vim ~/.bash_profile 系统关闭后依旧生效,但对象只针对与相对应的用户
export a=1
系统级 vim /etc/profile 对系统所有的用户都生效
export a=1
直接给a赋值
直接打印 可以出现a的值
在这里插入图片描述
使用. test.sh也可以出现a的值
在这里插入图片描述
这种暂时的赋值在进程结束后会失效
在这里插入图片描述
用户个人环境变量配置
ls -a 可以查看到环境的变量配置文件
在这里插入图片描述

编辑用户的环境配置文件
在这里插入图片描述
添加 export a=1
在这里插入图片描述
source .bash_profile 使得命令立刻生效
在这里插入图片描述
退出当前环境重新进入依旧可以查看a的值
在这里插入图片描述
但当我们退出切换到用户student登陆时,这时在查看a的值便无法查看了(因为改变的是用户root的环境变量,与student用户无关)
在这里插入图片描述
修改全局环境变量
vim /etc/profile
在这里插入图片描述
给a赋值为10
在这里插入图片描述

使得配置立即生效
在这里插入图片描述
用户root的环境变量值为5
在这里插入图片描述

切换用户到student(不切换环境变量)

su student
student会依旧使用root的环境变量
在这里插入图片描述
切换用户(切换环境变量)
su - studnet
在这里插入图片描述
那root用户的全局环境变量配置文件和个人环境变量配置文件该读取那个呢?
其实两个时都读取的,先读取全局变量的环境,再读取个人的环境变量,所以使用的a的环境变量的值为5
在这里插入图片描述
变量名称的规范

变量名称中通常包括大小写字母,数字,下划线(不是必须)
		变量名称格式
		WESTOS_LINUX
		Westos_Linux
		westos_Linux
		
		\转译单串连续的字符
		""(弱引)不能引用 !,`,\,!,$(批量转译“”中出现的字符)
		‘’(强引,批量转译‘’中出现的字符)
		${}变量声明
		eg:
		a=1
		echo $ab
		echo ${a}b

在这里插入图片描述

变量值传递
$1 脚本后的第一串字符串
$2 脚本中的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 4 ”(只输入一串字符串)
$@ 脚本后跟的所有字符串,模式为“ 1 ” “ 2 ” “ 3 ” “ 4 ”(输入了四串字符串)
$$ 脚本后跟进程id
在这里插入图片描述
在这里插入图片描述
sh cheng.sh cheng1 cheng2 cheng3后跟三个字符串
在这里插入图片描述
∗ 与 *与 @的区别
$*只执行因此命令一次性打印字符串“1 2 3 4”
在这里插入图片描述
$@执行四次命令 “1” “2” “3” “4”,调用了四次字符串
在这里插入图片描述
脚本交互
在这里插入图片描述在这里插入图片描述
函数
使用函数实现三个模块Delete,Create,Exit
Create模块用户实现每次创建后可以继续新建用户,若用户以存在则提示该用户以存在
Delete模块实现删除用户,若用户不存在则提示该用户不存在并直接返回选择函数
Exit模块实现退出
选择模块中添加三个模块的函数。

#!/bin/bash
Create()
{
	echo ""
	read -p "Please Input Usename You Want to Create:" Username
	id $Username &> /dev/null && {
		echo -e "\nUser exist!!!\n"
		read -p "If You Want To Go On Creating Action[(Y/y)]:" Choose
		[ "$Choose" == "Y" -o "$Choose" == y ] && {
			Create
		} || {
			echo "" 	
		} 
	} || {
		useradd $Username &> /dev/null
		echo ""
		read  -s -p  "Please Input User's PassWord:" Password
		passwd $Username &>/dev/null <<-EOF
		$Password
		$Password
		EOF
		echo ""
		echo -e "\nUser $Username Create Success!"
	}	
}

Delete()
{
	echo ""
	read -p "Please Input Usename You Want to Delete:" Username
        id $Username &> /dev/null && {
                userdel -r $Username
                echo -e "\nUser $Username Delete Success!"
        } || {
		echo -e "\nUser $Username is not exist!!!\n"
		read -p "If You Want To Go On Deleting Action[(Y/y)]:" Choose
		[ "$Choose" == "Y" -o "$Choose" == y ] && {
			Delete
		} 
	} 
}


USERCMD()
{
	echo -e "\n[C]reate [D]elete [E]xit\n"
	read -p "Please Input Your Action:" Action
	[ "$Action" == "c" -o "$Action" == "C" ] && {
		Create
		USERCMD		
	}
	[ "$Action" == "D" -o "$Action" == "d" ] && {
		Delete
		USERCMD
	}
	[ "$Action" == "e" -o "$Action" == "E" ] && {
		echo -e "\nByeBye\n"
		exit 0
	}
	echo -e "\nInput Wrong Character\n" && USERCMD
}

USERCMD

数组
a类型的值为1,2,3,4
输出a[0]为1
输出a[1]为2
代表一类型的值
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值