shell脚本中的变量

shell脚本中的变量

1.变量的定义

  • 定义:变量就是内存一片区域的地址
  • 变量存在的意义:命令无法操作一直变化的目标,用一串固定的字符来表示不固定的目标可以解决此问题

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

  • 环境级别
    export A=1
    环境关闭后失效
    /mnt/westos.sh ##编辑输出文件
    echo $A

  • 用户级别
    vim ~/.bash_profile ##只对当前用户生效
    exportA=1
    在这里插入图片描述
    source ~/.bash_profile ##调用
    sh /mnt/westos.sh ##执行
    在这里插入图片描述
    在这里插入图片描述

  • 系统级别
    vim /etc/profile.d/luqq.sh ##对用户luqq生效
    export A=1
    在这里插入图片描述
    test:
    su - luqq
    sh /mnt/westos.sh ##用户luqq可执行
    在这里插入图片描述
    vim /etc/profile.d/path.sh ##添加环境变量
    PATH=$PATH:/mnt ##添加/mnt为环境变量,原始值的基础上加/mnt
    在这里插入图片描述
    chmod +x /mnt/westos.sh ##给文件可执行权限
    westos.sh ##可直接调用
    在这里插入图片描述

  • 变量名称
    1.变量名称字符: 字母 下划线 数字
    2.规则:不可用数字开头
    3.建议:变量名称短全用大写字符,变量名称长首字母大写
    A=1
    echo ${A}b
    在这里插入图片描述

3.变量的转译

1)转译

\ ##转义单个字符
echo /boot
“”##弱引用,不可转义’ \ $ !
echo “############$USER###########”
echo “!5”
‘’ ##强引用
echo ‘############$USER###########’
在这里插入图片描述

echo ‘!’
echo ‘!5’
在这里插入图片描述

2)声明

a=1
echo $ab
echo ${a}b
在这里插入图片描述

3)变量的数组

  • a={1 2 3 4 5}
    ${A[1]} ##显示数组第一个元素
    echo $A ##显示第一个元素
    echo ${A[1]} #显示第一个元素
    ${A[@]} ##显示所有元素
    echo ${A[*]} ##显示所有元素
    echo ${A[@]} ##显示所有元素
    ${A[-2]} ##表示倒数第二个元素
    echo ${#A[@]} ##显示倒数第一个元素
    echo ${A[-1]} ##显示倒数第一个元素
    echo ${A[-3]} ##显示倒数第三个元素
    在这里插入图片描述
    ${A[@]:1:3} ##由元素1开始向后3个
    ${A[@]:1:3} ##显示第一个元素后三个
    echo ${A[@]:3:2} ##由第三个元素开始向后两个
    在这里插入图片描述

4.linux中命令的别名设定

alias xie=‘vim’ ##只针对当前窗口
alias ##查看
xie westos ##测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

~/.bashrc ##只针对当前用户
alias xie=’vim‘
source ~/.bashrc ##调用
su - luqq
xie westos ##不生效,只对当前用户生效
在这里插入图片描述
在这里插入图片描述

/etc/bashrc/ ##针对所有用户
tail -n2 /etc/bashrc
su - luqq
xie westos ##生效
在这里插入图片描述

删除:文件内删除,调用更新
vim ~/.bashrc
vim /etc/bashrc
source ~/.bashrc
unalies xie ##删除xie
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 编写创建用户脚本
    1.判断是否添加用户列表
    2.判断用户列表是否存在
    3.判断用户是否存在
    4.调用列表,调用第一行创建用户,调用第二行创建密码
    在这里插入图片描述

  • 适用范围:
    $() ##只在shell中使用

    ‘’##适用范围广

6.传参

1)直接利用命令执行结果
KaTeX parse error: Expected 'EOF', got '#' at position 9: ()|'' #̲#优先执行 TEST=host…(hostname)
在这里插入图片描述
在这里插入图片描述

2)脚本中的传参:
非交互模式:
vim westos.sh
#!/bin/bash
echo ‘$0’ is $0 ##脚本本身
echo ‘$1’ is $1 ##输出第一串字符
echo ‘$2’ is $2 ##输出第二串字符
echo ‘$3’ is KaTeX parse error: Expected 'EOF', got '#' at position 4: 3 #̲#输出第三串字符 echo '#’ is KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ ##输出字符长度 echo…*’ is KaTeX parse error: Expected 'EOF', got '#' at position 6: * #̲#输出所有字符 echo '@’ is $@ ##输出所有字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

交互模式传参:
read -p ##打印相应字符
read -p "input: " WORD ##输入值赋给WORD
echo $WORD ##输出WORD的值
在这里插入图片描述

vim westos1.sh
#!/bin/bash
read -p "Please input word: " WORD ##输入值赋给变量
echo $WORD ##输出变量值
-s ##隐藏输入内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

test:查看文件类型
在这里插入图片描述
在这里插入图片描述

7.脚本函数

定义:
程序中的别名
test:检测系统中的用户

#!/bin/bash  
ACTION()
{
    read -p "please input username: " USERNAME
		[ "\$USERNAME" = "exit" ]&&{
		exit
		}||{
    id $USERNAME &> /dev/null &&{
    echo "\$USERNAME is exit"
    ACTION
    }||{
    echo "\$USERNAME is not exit"
    read -p "please input password: " PASSWORD
    useradd $USERNAME &> /dev/null &&{
    echo "\$USERNAME is create"
    echo passwd | passwd stdin $PASSWORD &> /dev/null
    ACTION
    }
		}
}
}
ACTION

teacher版:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值