【shell脚本4】shell环境变量的设定

一.变量的定义

一、定义本身

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

二、 变量存在的意义

命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题

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

在这里插入图片描述

一、环境级别

export a=1

开启新的shell依然生效

在这里插入图片描述

二、用户级别

vim ~/.bash_profile
\\\
export a=1
\\\
source ~/.bash_profile

ssh退出登陆,再次进入相同用户后依然生效

三、系统级别

vim /etc/profile.d/westos.sh  ##系统子目录里面
\\\
export b=3
\\\
source /etc/profile.d/westos.sh

切换用户后仍然能生效

三、变量名称

一、变量名称可包含的字符

字母
下划线_
数字

二、建议:

变量名称短全用大写字符
变量名称长用_区分子类
例如:
WESTOS
Westos_Linux
westoS_Linux

三 、修改linux指令窗口的格式

在这里插入图片描述

四、变量的转译

一、转译

\转译单个字符
“”弱引用,批量转译个数字符 不能转译"\ " “” “$” “!”
‘’强引用

\可以转译字符,但是只能转译一个字符
在这里插入图片描述
“”是弱转译,可以实现批量转译
在这里插入图片描述
“”但是转译不了$,\符号
在这里插入图片描述
‘’是强转译
在这里插入图片描述

二、声明

a=1 a是一个变量
echo $ab  此时,ab是一个整体变量,输出为空
echo ${a}b  应该对a变量声明,输出为1b

伍、变量的数组

一、基本命令

令a=(1 2 3 4 5)

echo ${#a[@]}数组中个个数
echo ${a[0]}数组中第一个元素
echo ${a[-1]}数组中最后一个元素
echo ${a[*]}数组中所有元素
echo ${a[@]}数组中所有元素
echo ${a[@]:0:3}数组中从0开始,显示三个元素
unset a[n]删除数组中的第n1个元素
unset a删除a这个数组

六、Linux中命令的别名设定

一、临时设定

alias xie='vim'

二、永久设定

1)只针对当前用户

vim ~/.bashrc
\\\
alias xie='vim'
\\\
source ~/.bashrc

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

vim /etc/bashrc 
\\\
alias xie='vim'
\\\
source /etc/bashrc 

去除alias设定

unalias xie  ##删除当前环境中的alias

七、用户环境变量的更改

改变执行文件(脚本等)的系统搜索路径,不用加绝对路径也能执行。

echo $PATH                   查看当前的搜索路径

冒号为分割符
在这里插入图片描述

ls命令的绝对路径是/bin/ls,我们可以在系统的任意位置处直接使用ls命令查看当前所在目录中的内容,但不能在系统的任意位置处直接使用test.sh命令执行/mnt目录下的test.sh脚本。这是因为系统环境变量$PATH指定的目录中包含ls所在的/bin,所以我们可以在系统的任意位置处直接使用ls命令。

一、设定方式

将/mnt/test.sh加入到系统环境变量,可以直接启动
(1)针对当前用户

vim ~/.bash_profile

在这里插入图片描述

source ~/.bash_profile
chmod +x /mnt/test.sh
test.sh

在这里插入图片描述

(2)针对全部用户

vim /etc/bash_profile

二、脚本中的传参

脚本读取外部输入的方式
非交互模式输入:

sh mnt/test.sh westos linux redhat 

含义:

字符等于含义
$0test.sh<!脚本本身>
$1westos<!脚本后所输入的第一串字符>
$2linux<!脚本后所输入的第二串字符>
$3redhat<!脚本后所输入的第三串字符>
$*westos linux redhat代表"westos linux redhat"
$@westos linux redhat代表"westos" “linux” “redhat”
$#3统计输入的个数

八、脚本函数

交互式脚本(需要自己输入)

函数名称()
{
        action1
        action2
}
函数名称                  在脚本中该函数名称就代表了action1 action2这两个命令动作

九、练习题

1、编辑脚本test.sh,在其中编写脚本函数READ:输出提示语提示用户输入字符串,隐藏输入内容并读取用户输入的字符串将其赋值给变量WORD,判断变量WORD的值是否为exit,如果是exit则提示bye并退出脚本运行,如果不是exit则输出显示用户输入的字符串并再次调用脚本函数READ,至此脚本函数READ编写完成,在脚本中调用该函数

#!/bin/bash
READ()
{
read -p "please input word: " -s WORD       输入的值赋予给WORD,-s隐藏输入的值
        echo -e ""                          空行
        [ "$WORD" = "exit" ] && {           设置退出模式
        echo bye
        exit
  }||{
        echo $WORD                          输出WORD的值
        READ                                循环执行READ
     }
}

READ                                        执行READ

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

2、编写创建用户的脚本create_user.sh,在执行该脚本时提示请输入用户名,当输入的用户名为exit时脚本退出运行,当输入的用户名不为exit时判断该用户是否存在,如果用户存在则输出用户已存在并再次提示请输入用户名,如果用户不存在则提示请输入密码并隐藏用户输入的密码,此用户会自动建立并且密码为提示后输入的密码,接着显示用户建立完成并再次提示请输入用户名

#!/bin/bash
FILE()
{
read -p "please input the new user name: " USERNAME
        [ $USERNAME = 'exit' ] && {
        exit
        }


        id $USERNAME &> /dev/null && {
                echo ""
                echo "$USERNAME is exist"
                echo ""
                FILE
        }||{
                echo ""
                read -p "please input passwd" -s PASSWD
                useradd $USERNAME
                useradd $USERNAME | passwd --stdin $PASSWD
                echo ""
                echo "$USERNAME is created"
                echo ""
                FILE
        }

}
FILE

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值