Linux系统下shell脚本的变量

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

$USER 变量 相对应变化的值

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

环境级变量(只在当前环境生效):

	在 root 用户下,当前shell 定义a=1
	[root@shell mnt]# a=1
	[root@shell mnt]# echo $a
	1

切换至studnet echo $a 没有任何的输出
在这里插入图片描述
另外打开一个新的shell echo $a 也没有任何输出
在这里插入图片描述

用户级变量(只对当前用户生效):

		vim ~/.bash_profile			编辑用户家目录下的 .bash_profile

例:

		vim /root/bash_profile
		export westos=1

在这里插入图片描述

在超户身份下 echo $westos
在这里插入图片描述
切换至 student 用户
在这里插入图片描述

系统级(对系统内的用户都能生效)

		vim	/etc/profile
		export redhat=1

在这里插入图片描述
在root用户下

	sourc /etc/profile		重新加载配置文件
	echo $redhat

在这里插入图片描述
切换至其他用户

	echo $redhat

在这里插入图片描述

##################################
3.将脚本变成命令
默认的脚本执行需要 由 命令、参数加脚本文件

	echo $PATH		显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。

在这里插入图片描述

例如:系统中的命令 ls 我们可以直接使用 ls 进行运用,也可以使用 /bin/ls
在这里插入图片描述

将脚本变成命令就是用这种方式

	vim test.sh
	date

编辑一个显示日期的简易脚本进行实验
在这里插入图片描述

在修改之前 命令行输入 test.sh

在这里插入图片描述

	vim /root/.bash_profile
	10 PATH=$PATH:$HOME/bin:/mnt

在这里插入图片描述

	source /root/.bash_profile
	test.sh		就可以和命令一样直接运行

在这里插入图片描述
###################################
4.字符的转译

		\      转译单个字符

例:

		echo *			*表示所有
		ehco\*			*只是一个符号

在这里插入图片描述

		""     弱引用,批量转译 "" 中出现的字符,
		''     强引用,批量转译 '' 中出现的字符
		''     与 "" 两者的区别在于, ""弱引用不能转译 "\","`","!","$"

例:

		echo "$a"   和  echo '$a'

在这里插入图片描述

		${}    变量声明

例:
在这里插入图片描述

		$()     等于``   表示先执行

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

	$[]		表示运算

在这里插入图片描述

#############################
5.变量值的传递

		$1        脚本后的第一串字符
		$2        脚本后的第一串字符
		$#        脚本后字符串的个数
		$*        脚本后所有字符串"1 2 3 4 ..."
		$@        脚本后所有字符串"1" "2" "3" "..."

用read 实现变量传递

		read -p " "      变量
		read -p " " -s   加密变量

脚本示例:编辑脚本userctrl.sh 后面跟参数 -d 的时候需要输入用户名,然后删除该用户,跟参数 -c 的时候需要输入用户名然后创建用户及设定用户的密码,如果没有输入参数或者参数不是-d或者-c会有信息提示。

	vim userctl.sh
	[ -z "$1" ]&&{
    	echo -e "\033[35mPlease input -d | -c following userctl.sh\033[0m"
        exit
	}
	[ "$1" != "-d" -a "$1" != "-c" ]&&{
    	echo -e "\033[35mPlease input -d | -c following userctl.sh\033[0m"
    	exit
	}
	[ "$1" = "-d" ]&&{
    read -p "Please input username: " USER
      	echo ""
      	userdel -r $USER &> /dev/null ||{
      	echo -e "\033[35mCan't del becsuse $USER is not exist or busy!!!\033[0m"
      	}
    }
	[ "$1" = "-c" ]&&{
		read -p "Please input username: " USER
		read -p "Please input password: " -s PAS
		echo ""
		useradd $USER &> /dev/null &&{
		echo $PAS | passwd --stdin $USER &> /dev/null
		}||{
	    echo -e "\033[35m$USER is exist!!!\033[0m"
	    }
	}

在这里插入图片描述
检验脚本
在这里插入图片描述
在这里插入图片描述

#######################################
6.设置系统命令别名

环境级: alias kan=‘cat’ cat的别名为kan
用户级: vim .bashrc
系统级: vim /etc/bashrc
取消命令别名: unalias kan

例:在环境级中进行命令别名试验
设置别名之前
在这里插入图片描述
设置环境级别名后
在这里插入图片描述
离开当前环境,打开一个新的shell后别名不会生效
在这里插入图片描述

设置用户级别名,只有当前用户可用
在这里插入图片描述
在这里插入图片描述

设置系统级别名,所有用户所有环境都能用
在这里插入图片描述

在这里插入图片描述

############################
7.退出值exit

	exit = 0   上一命令执行正确
	exit != 0   上一命令执行错误

在这里插入图片描述

$? 是命令在执行完成之后产生的退出值,范围是【0-255】
################################
8.函数
脚本中的函数是把一个复杂的语句块定义成一个字符串的方法。

		函数字符串()
		{
			语句块
			函数字符串
		}
		函数字符串

例:

在这里插入图片描述
在这里插入图片描述
脚本示例:
编辑一个脚本,运行脚本输入用户名即可创建用户,并且可以指定用户密码,除了输入 exit 输入其他任何内容都不能退出

	vim create_user.shHAHA()
	{
    read -p "Please input username : " USERNAME
    [ "$USERNAME" = "exit" ]&&{
            echo bye
            exit 0
      }
     useradd $USERNAME &> /dev/null  &&{
            read -p "Please input password : " -s PASSWD
            echo ""
            echo $PASSWD | passwd --stdin $USERNAME &> /dev/null
            HAHA
       }||{
              echo $USERNAME is already exist
              HAHA
    	 }
	 }
  HAHA

在这里插入图片描述

实验效果:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值