linux系统中shell的变量

shell的变量

基本内容:

一.在shell脚本中如何定义变量
二.变量的转译
三.linux系统中命令别名的设定
四.用户环境变量的设定
五.利用命令执行结果设定变量
六.脚本函数

一.变量的定义

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

2.在 shell 脚本中变量的种类

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

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

3.shell 脚本中变量的定义方法

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

4.变量设定 :

1.环境级变量:只在顶级程序中生效

示例:在shell中在开一个shell执行echo $a不生效

这里写图片描述

在子程序中使用变量用:export a=1

示例:

这里写图片描述

2.用户级变量:写在用户的骨文件(.bash_profile)中,只针对当前用户生效。
vim  .bash_profile     编辑配文件
内容:
export a=5
souecr .bash_profile   刷新让系统重读文件

示例:只对当前用户生效

这里写图片描述

3.系统级变量:被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效。

示例: vim /etc/profile 编辑文件

这里写图片描述
这里写图片描述

5.变量名称的规范

1.变量名称中通常包含大小写字字母,数字,下划线(不是必须)。
2.变量名称格式:
WESTOS_LINUX
Westos_Linux
westoS_Linux

二.字符的转译及变量的声明

1. 字符的转译

\      转译单个字符
""     弱引用,批量转译 "" 中出现的字符,
''     强引用,批量转译 '' 中出现的字符
''"" 两者的区别在于, ""弱引用不能转译 "\","`","!","$"
${}    变量声明
()     等于``   表示先执行

示例:

这里写图片描述

[]         表示运算

示例:

这里写图片描述

2. 变量值传递

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

用 read 实现变量传递

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

示例:编写脚本echo.sh,当输入exit时推出,否则一直执行

vim   echo.sh     编辑脚本
内容:
#!/bin/bash
while true
do
        read -p "Please input a word " -s WORD
        echo $WORD
        [ $WORD = exit ] && exit
done

执行结果:

这里写图片描述

3.脚本示例:

编辑脚本:user_ctrl.sh实现建立删除用户

vim   user_ctrl.sh    编辑脚本
内容:
#!/bin/bash
[ -z $1 ] && {
        echo Error:please input create or delete!!
        exit 1
}
[ $1 != "create" -a $1 != "delete" ] && {
        echo Error:please input create or delete!!
        exit 1
}
[ $1 = "create" ] && {
        read -p "please give me a user name: " USER_NAME
        User=`awk -F : '{print $1}' /etc/passwd | grep $USER_NAME`
        [ -z $User ] && {
                read -p "please give me a passwd: " -s PASSWD
                useradd $USER_NAME
                echo $PASSWD | passwd --stdin $USER_NAME
        } ||
        echo $User is exist!
}
[ $1 = "delete" ] && {
        read -p "plesae give me a user name: " USER_NAME
        User=`awk -F : '{print $1}' /etc/passwd | grep $USER_NAME`
        [ -z $User ] && {
                echo $USER_NAME is not exist!
                exit 1
        }
        userdel -r $User
}

执行结果:

这里写图片描述

4.优化脚本user_ctrl.sh实现:删除用户时,再次确认操作并给出回复!

修改脚本delete部分:

#!/bin/bash
[ -z $1 ] && {
        echo Error:please input create or delete!!
        exit 1
}
[ $1 != "create" -a $1 != "delete" ] && {
        echo Error:please input create or delete!!
        exit 1
}
[ $1 = "create" ] && {
        read -p "please give me a user name: " USER_NAME
        User=`awk -F : '{print $1}' /etc/passwd | grep $USER_NAME`
        [ -z $User ] && {
                read -p "please give me a passwd: " -s PASSWD
                useradd $USER_NAME
                echo $PASSWD | passwd --stdin $USER_NAME
        } ||
        echo $User is exist!
}
[ $1 = "delete" ] && {
        read -p "plesae give me a user name: " USER_NAME
        User=`awk -F : '{print $1}' /etc/passwd | grep $USER_NAME`
        [ -z $User ] && {
                echo $USER_NAME is not exist!
                exit 1
        } ||
        read -p "Are you sure delete[y/n]:" DEL
        [ -z $DEL ] && {
                echo Error:please input y/n!!
                exit 1
        }
        [ $DEL = y ] && {
                userdel -r $USER_NAME
                echo $USER_NAME is delete !!
        } ||
                echo Not do deleted!!
}

执行结果:

这里写图片描述

5.设置系统命令别名

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

示例:系统级

这里写图片描述

6.退出值exit

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

这里写图片描述

7.函数

用函数编辑脚本判断文件的类型:

vim   Check_file.sh     编辑脚本
内容:
  1 #!/bin/bash
  2 Check_File(){
  3         [ $1 $2 ] && {
  4                 echo $3
  5         } || {
  6                 echo -n $4
  7                 echo -ne "\r   \r"
  8                 }
  9 }
 10 [ -z $1 ] && {
 11         echo Error:please give me a filename!
 12         exit 1
 13 }
 14 Check_File "-e" $1 "" "$1 is not exit"
 15 Check_File "-L" $1  "$1 is a link"
 16 Check_File "-f" $1  "$1 is a common file"
 17 Check_File "-S" $1  "$1 is a socket"
 18 Check_File "-d" $1  "$1 is a directory"
 19 Check_File "-c" $1  "$1 is a char file"
 20 Check_File "-b" $1  "$1 is a block"

执行结果:

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值