Shell中的变量

1 变量

定义:变量就是内存一片区域的地址

变量存在的意义:命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标

2 shell脚本中变量的定义方法

(1)环境级别:在环境关闭后变量失效

在这里插入图片描述
(2)用户级别:变量只对当前用户生效

  • 编辑配置文件:~/.bash_profile
  • 使修改的配置文件立即生效:source ~/.bash_profile

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

在这里插入图片描述
(3)系统级别:只对系统的所有用户生效

  • 编辑配置文件:vim /etc/profile

  • 使修改的配置文件立即生效:source /etc/profile

在这里插入图片描述

在这里插入图片描述

3 变量名的命名规则

  1-  命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  2-  中间不能有空格,可以使用下划线 ”_"
  3-  不能使用标点符号
  4-  不能使用bash里的关键字(可用help命令查看保留关键字)
	  建议:
		变量名称短全用大写字符
		变量名称长用_区分子类

4 变量的转译

(1)转译

	\	## 转译单个字符
	""	## 弱引用,批量转译个数字符 不能转译"\" "`" "$" "!"
	''	## 强引用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(2)变量的声明

在这里插入图片描述

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

测试题:编写脚本,脚本执行时userfile文件中的用户会被全部建立

	思路:
	(1)执行脚本的用户是不是root用户
	(2)执行脚本时是否跟文件的名字
	(3)文件是否存在
	(4)文件中的用户是否已经存在
#!/bin/bash
[ "$USER" = "root" ] || {
  echo please run script with root!!! ##运行脚本的用户不是root时退出
  exit
  }
[ -z $1 ] && {
  echo please username following script!! ##执行脚本时是否跟文件的名字
  exit
   }
[ -e "$1"  ] ||{
  echo "$1 file is not exit!!" ##文件存在退出
  exit
}
for USERNAME in $(cat $1) ##判断读取的用户名单中的用户是否已经存在
do
  id $1 &>/dev/null &&{
  echo "$1 is exit!!" ##用户已存在提示用户已经存在
 }||{
  useradd  $USERNAME  ##用户不存在时创建用户	
  echo "$USERNAME is created!!"
  }
done


在这里插入图片描述

5 Linux中命令的别名设定

(1)临时设定:alias xie='vim'
在这里插入图片描述

(2)针对指定用户生效

  • 编辑用户家目录下的配置文件:vim ~/.bashrc,设定只对该用户生效

在这里插入图片描述

  • 使更改生效:source ~/.bashrc

在这里插入图片描述
(3)设定针对系统中的所有用户生效

  • 编辑系统配置文件:vim /etc/bashrc

在这里插入图片描述

  • 使更改生效:source /etc/bashrc

在这里插入图片描述

在这里插入图片描述

(4)删除当前环境中的alias

在这里插入图片描述

  • 删除当前环境中的alias:unalias xie

在这里插入图片描述

6 用户环境变量的更改

环境变量:用户在操作系统时使用到的命令搜索路径
在这里插入图片描述
(1)针对设定的用户生效

  • 编辑用户的配置文件:~/.bash_profile
  • 刷新配置文件:source ~/.bash_profile

在这里插入图片描述

  • 测试结果:设定仅针对特定用户生效

在这里插入图片描述

(2)针对系统中的所有用户生效

  • 编辑配置文件:vim /etc/bash_profile
  • 刷新配置文件:source /etc/bash_profile

在这里插入图片描述

  • 测试效果:设定针对系统所有的用户生效

在这里插入图片描述

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

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

	$()|``		##优先执行

在这里插入图片描述

(2)脚本中的传参

  • 非交互模式

在这里插入图片描述

  • 交互模式传参:

     read  INPUT		            ##对westos赋值
     read -p "please input word:"	##输出提示语
     -s				                ##隐藏输入内容
    

输入用户名和密码,其中输入的密码不显示:

#!/bin/bash
read -p "please input username:" USERNAME
read -p  "please input passwd:" -s  POSSWD
echo ""

在这里插入图片描述

7.脚本函数

  • 定义:程序的别名

  • 设定方式:

     WORD()
     {
     	action1
     	action2
     }
     ##WORD 在脚本中就代表action1 action2这两个动作
    

练习:

(1)创建脚本check_word.sh

  • 如果输入westos输出linux;如果输入linux输出westos;如果输入exit则输出by后退出;如果输入其他字符则提示重新输入
CHECK(){
read -p "please input word: " USERNAME
[ "$USERNAME" = "westos" ] && { 
   echo linux  ##输入westos时
   CHECK
   } || {
[ "$USERNAME" = "linux" ] && {
  echo linux  ##输入linus时
  CHECK
  } || {
[ "$USERNAME" = "exit" ] && {
  echo bye   ##输入exit时
  exit
    } || {
  echo  "please input westos or linux!!"  ##输入其他字符串时
  CHECK
    }
   }

 }
}
CHECK

在这里插入图片描述

(2)创建脚本:user_test.sh

 1- 在脚本后输入动作:add 或de或exitl,如果不是这三个动作提示“please input ‘add’ ‘del’ ‘exit’ !!”
 2- 当输入的动作是add时,界面显示“please input usename :”,如果用户已存在提示“username is exit!!”,程序重新回到选择添加用户的界面;否则创建新的用户,根据提示“please input password :”设置新建的用户的密码, 最后输出“username is created !!”,程序重新回到动作选择界面
 3-	当输入的动作是del时,界面显示“please input uasename :”如果用户不存在提示“username is not exit!!”,程序回到删除动作界面;否则删除用户,并提示“username is delete !!”,程序重新回到动作选择界面
 4- 当输入的动作是“exit”则直接退出程序
#!/bin/bash
ACTION(){
read -p "please input action : " Action ##输入要执行的动作
[ "$Action" = "add"  ] && {
     ADD  ##输入的动作是add时执行add函数
     } || {
[ "$Action" = "del" ] && {  ##输入的动作是del时执行del函数
     DEL
     } || {
[ "$Action" = "exit" ] && {  ##输入的动作是exit时执行exit退出
     exit
     } ||{   
     echo "please input action 'add' or 'del'or 'exit'!!"
      ACTION     ##输入的动作是其他动作时提示重新输入动作,并重新输出动作选择界面
     }
    }
  }
}
ADD(){
read -p "please input username to add: "  USERNAME
id $USERNAME &>/dev/null && {  ## 要创建的用户名已经存在时
  echo "$USERNAME is exit!!"
  ADD
  } || {
  useradd $USERNAME    ##要用户名不存在,添加用户
  read -p "please set $USERNAME password: " PASSWD  ##提示出入密码
  echo $PASSWD | passwd --stdin  $USERNAME &>/dev/null
  echo "$USERNAME is created!!"  ##用户创建成功
  ACTION
  }
}
DEL(){
read -p "please input username to del: "  USERNAME
id $USERNAME &>/dev/null && {  ##输入的要删除用户存在,执行删除用户,提示删除成功并返回动作选择界面
  userdel -r $USERNAME
  echo "$USERNAME is delted!!" 
  ACTION
  } || {
  echo "$USERNAME is not exit!!"   ##输入的要删除用户不存在时,提示用户不存在并重新回到输入删除用户的交互界面
  DEL
  }
}
[ "$USER" = "root" ] ||{
     echo " plese run script in root!! "
     exit
     } && {
     ACTION
     }

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值