shell编程之二(变量引用,shell嵌套变量引用)

变量

shell变量的赋值(两种方式)
    variable=value
    $(variable=value)

变量赋值 注意点:
    1:等号=两边可以有空格,这不影响赋值
    2:如果值value包含空格,需要用""引起来
    3:变量名variable不能以数字开头,并且职能包含大小写,下划线,和数字

利用unset清除变量的值
    unset 变量名

用readonly将变量设为只读模式
    tianyu=123
    readonly tianyu

查看系统中所有的只读变量
    readonly

如何定义一个环境变量
    先定义一个变量,然后用export声明一下(这个定义的变量名,建议大写)
    APPAT=/usr/sbin
    export APPAT

查看系统中所有的环境变量
    env

如何清除环境变量(与清除其他变量相同)
    unset APPAT

PATH是非常重要的环境变量(存放可执行文件的路径)
    echo $PATH

如要在PATH中添加新目录
    export PATH="new directory":$PATH

HOME变量记录了用户的家目录,由/etc/passwd的倒数第二个域决定

SHELL变量,记录了当前系统默认的shell

USER和UID两个变量记录当前已登录的用户名和id号
    echo $USER $UID

PPID记录了创建当前进程的进程号,即当前进程的父进程号

PS1和PS2,称为提示符变量,用于设置提示符格式
wsfnk@ThinkPad-E540:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
wsfnk@ThinkPad-E540:~$ echo $PS2
>

    其中提示符变量中特殊符号及其意义
    \d  以"周 月 日"格式显示日期
    \H  主机名和域名
    \h  主机名
    \s  shell的类型名称
    \T  以12小时制显示时间,HH:MM:SS
    \t  以24小时制显示时间,HH:MM:SS
    \@  以12小时制显示时间,am/pm
    \u  当前的用户名
    \v  bash shell的版本号
    \V  bash shell的版本号和补丁号
    \w  当前工作目录的完整路径
    \W  当前工作目录的名字
    \#  当前命令的序列号
    \$  如果UID为0,则打印#,否在打印$

PS2是用于设置二级shell提示符的环境变量(当命令没有输入完整时显示,默认是>)

环境变量的配置文件(linux的环境变量较多,管理员可以通过环境变量配置文件来进行管理)
    下面三个文件都存在与用户的家目录下,是以.开头的隐藏文件
    .bash_profile(最重要,有的linux版本名字是.profile)
    .bashrc
    .bash_logout

当修改环境变量的配置文件后,需要注销后再次登录才能生效,当然可以使用下面的命令刷新,立即生效
    source .bash_profile
    或则
    . .bash_profile

位置参数(shell变量中特殊的变量)
    $0 $1 $2 $3 ${10} ${12} $*
    $1,表示第一个参数,$2,表示第二个参数
    $0,表示脚本的名字
    ${12},表示第12个参数,只是从10开始,都有使用{}括起来
    $*和$@一样,表示从$1开始的所有参数
    $#,表示传递到脚本的参数数量
    $$,脚本运行的进程号

变量的引用

变量的引用

    ""  引用除$,`,\三种符号之外的所有字符
    ''  引用所有的字符
    ``  shell将反引号中的内容解释为命令
    \   转移符,屏蔽下一个字符的特殊意义

    echo "$PWD is ok"   #使用""这里的$PWD将被替换
    echo '$PWD is ok'   #使用''这里的$PWD不会被替换

Shell双重变量引用

#!/bin/bash
    #从标准输入给变量A传递一个参数
    read -p "请输A端节点:" A
    #定义一个变量Node,为其赋值为192.168.1.1
    Node=192.168.1.1

    Z=${A}_PPL
    现在需要在一行调用变量Z

    eval echo "ip addr add "$"$A"_Dn42_ip/32" peer ${ZIPDN42}/32 dev ${Z}_$ZASN
微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/11/20作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???