shell变量

变量定义

弱类型不需要关注变量类型,变量和值之间不能有空格,有空格会报错

┌──(root㉿kali)-[~]
└─# name="121212"
                                                              
┌──(root㉿kali)-[~]
└─# name = "121212"
Command 'name' not found, did you mean:
  command 'uname' from deb coreutils
  command 'lame' from deb lame
  command 'nama' from deb nama
  command 'namei' from deb util-linux
  command 'nam' from deb nam
  command 'named' from deb bind9
  command 'nvme' from deb nvme-cli
Try: apt install <deb name>
变量名
变量类型,bash默认把所有的变量都认为是字符串
bash变量是弱类型,无需事先声明类型,是将声明和赋值同时进行                               

变量的替换/引用

┌──(root㉿kali)-[~]
└─# name=taylorswift 
简写形式输出                                                        
┌──(root㉿kali)-[~]
└─# echo $name 
taylorswift
加上{}完整形式输出   ({}可以省略)                                                        
┌──(root㉿kali)-[~]
└─# echo ${name}
taylorswift

变量名规则

见名知意,不得保留关键字
只能数字,字母,下划线   eg:ts13_,_ts13
不能数字开头
不能用标点符
变量名严格区分大小写

变量的作用域

俄罗斯套娃理解

pstree命令

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;
-U:使用UTF-8列绘图字符;
-V:显示版本信息。

本地变量,当前shell

单引号变量,不识别特殊语法
双引号变量,能识别特殊符号
                                                                                                 
┌──(root㉿kali)-[~]
└─# bash         
[┌──(root㉿kali)-[~]
└─# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─colord───2*[{colord}]
        ├─cron
        ├─dbus-daemon
        ├─haveged
        ├─lightdm─┬─Xorg───{Xorg}
        │         ├─lightdm─┬─xfce4-session─┬─Thunar───2*[{Thunar}]
        │         │         │               ├─agent───2*[{agent}]
        │         │         │               ├─blueman-applet───3*[{blueman-applet}]
        │         │         │               ├─light-locker───3*[{light-locker}]
        │         │         │               ├─nm-applet───3*[{nm-applet}]
        │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
        │         │         │               ├─ssh-agent
        │         │         │               ├─xfce4-panel─┬─panel-1-whisker───2*[{panel-1-whiske+
        │         │         │               │             ├─panel-13-cpugra───2*[{panel-13-cpugr+
        │         │         │               │             ├─panel-14-systra───2*[{panel-14-systr+
        │         │         │               │             ├─panel-15-genmon───2*[{panel-15-genmo+
        │         │         │               │             ├─panel-16-pulsea───2*[{panel-16-pulse+
        │         │         │               │             ├─panel-17-notifi───2*[{panel-17-notif+
        │         │         │               │             ├─panel-18-power-───2*[{panel-18-power+
        │         │         │               │             ├─panel-22-action───2*[{panel-22-actio+
        │         │         │               │             └─2*[{xfce4-panel}]
        │         │         │               ├─xfce4-power-man───2*[{xfce4-power-man}]
        │         │         │               ├─xfdesktop───2*[{xfdesktop}]
        │         │         │               ├─xfsettingsd───2*[{xfsettingsd}]
        │         │         │               ├─xfwm4───11*[{xfwm4}]
        │         │         │               ├─xiccd───2*[{xiccd}]
        │         │         │               └─2*[{xfce4-session}]
        │         │         └─2*[{lightdm}]
        │         └─2*[{lightdm}]
        ├─polkitd───2*[{polkitd}]
        ├─qterminal─┬─zsh───sudo───sudo───zsh───bash───pstree#1.bash过后新增了一个bash
        │           └─2*[{qterminal}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─systemd─┬─(sd-pam)
        │         ├─at-spi-bus-laun─┬─dbus-daemon
        │         │                 └─3*[{at-spi-bus-laun}]
        │         ├─at-spi2-registr───2*[{at-spi2-registr}]
        │         ├─dbus-daemon
        │         ├─dconf-service───2*[{dconf-service}]
        │         ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        │         ├─gpg-agent
        │         ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        │         ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        │         ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        │         ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        │         ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]
        │         ├─gvfsd─┬─gvfsd-trash───2*[{gvfsd-trash}]
        │         │       └─2*[{gvfsd}]
        │         ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        │         ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        │         ├─obexd
        │         ├─pulseaudio───2*[{pulseaudio}]
        │         ├─xfce4-notifyd───2*[{xfce4-notifyd}]
        │         └─xfconfd───2*[{xfconfd}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───2*[{vmtoolsd}]
        ├─vmtoolsd───3*[{vmtoolsd}]
        ├─vmware-vmblock-───2*[{vmware-vmblock-}]
        └─xcape───{xcape}

┌──(root㉿kali)-[~]
└─# exit
exit#2.在此退出bash
                                                                                                 
┌──(root㉿kali)-[~]
└─# pstree          
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─colord───2*[{colord}]
        ├─cron
        ├─dbus-daemon
        ├─haveged
        ├─lightdm─┬─Xorg───{Xorg}
        │         ├─lightdm─┬─xfce4-session─┬─Thunar───2*[{Thunar}]
        │         │         │               ├─agent───2*[{agent}]
        │         │         │               ├─blueman-applet───3*[{blueman-applet}]
        │         │         │               ├─light-locker───3*[{light-locker}]
        │         │         │               ├─nm-applet───3*[{nm-applet}]
        │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
        │         │         │               ├─ssh-agent
        │         │         │               ├─xfce4-panel─┬─panel-1-whisker───2*[{panel-1-whiske+
        │         │         │               │             ├─panel-13-cpugra───2*[{panel-13-cpugr+
        │         │         │               │             ├─panel-14-systra───2*[{panel-14-systr+
        │         │         │               │             ├─panel-15-genmon───2*[{panel-15-genmo+
        │         │         │               │             ├─panel-16-pulsea───2*[{panel-16-pulse+
        │         │         │               │             ├─panel-17-notifi───2*[{panel-17-notif+
        │         │         │               │             ├─panel-18-power-───2*[{panel-18-power+
        │         │         │               │             ├─panel-22-action───2*[{panel-22-actio+
        │         │         │               │             └─2*[{xfce4-panel}]
        │         │         │               ├─xfce4-power-man───2*[{xfce4-power-man}]
        │         │         │               ├─xfdesktop───2*[{xfdesktop}]
        │         │         │               ├─xfsettingsd───2*[{xfsettingsd}]
        │         │         │               ├─xfwm4───11*[{xfwm4}]
        │         │         │               ├─xiccd───2*[{xiccd}]
        │         │         │               └─2*[{xfce4-session}]
        │         │         └─2*[{lightdm}]
        │         └─2*[{lightdm}]
        ├─polkitd───2*[{polkitd}]
        ├─qterminal─┬─zsh───sudo───sudo───zsh───pstree#3.发现bash已退出
        │           └─2*[{qterminal}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─systemd─┬─(sd-pam)
        │         ├─at-spi-bus-laun─┬─dbus-daemon
        │         │                 └─3*[{at-spi-bus-laun}]
        │         ├─at-spi2-registr───2*[{at-spi2-registr}]
        │         ├─dbus-daemon
        │         ├─dconf-service───2*[{dconf-service}]
        │         ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        │         ├─gpg-agent
        │         ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        │         ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        │         ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        │         ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        │         ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]
        │         ├─gvfsd─┬─gvfsd-trash───2*[{gvfsd-trash}]
        │         │       └─2*[{gvfsd}]
        │         ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        │         ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        │         ├─obexd
        │         ├─pulseaudio───2*[{pulseaudio}]
        │         ├─xfce4-notifyd───2*[{xfce4-notifyd}]
        │         └─xfconfd───2*[{xfconfd}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───2*[{vmtoolsd}]
        ├─vmtoolsd───3*[{vmtoolsd}]
        ├─vmware-vmblock-───2*[{vmware-vmblock-}]
        └─xcape───{xcape}
                                                                                                 
┌──(root㉿kali)-[~]
└─# 

环境变量

也称为全局变量 ,针对当前shell以及其任意子进程,环境变量也分 自定义,内置 两种环境变量

局部变量

针对在shell函数或是shell脚本中定义

位置参数变量

用于shell脚本中参数的传递

特殊变量

shell内置的特殊功效变量

#输入$?
##0:上一段代码执行成功
##1~255:(0到255)上一段代码执行错误


─(root㉿kali)-[~]
└─# name="121212"  
                                                              
┌──(root㉿kali)-[~]
└─# echo $name     
121212
                                                              
┌──(root㉿kali)-[~]
└─# echo $?   
0
                                                              
┌──(root㉿kali)-[~]
└─# name = "121212"
Command 'name' not found, did you mean:
  command 'uname' from deb coreutils
  command 'namei' from deb util-linux
  command 'named' from deb bind9
  command 'lame' from deb lame
  command 'nama' from deb nama
  command 'nam' from deb nam
  command 'nvme' from deb nvme-cli
Try: apt install <deb name>
                                                              
┌──(root㉿kali)-[~]
└─# echo $?        
127
                                                              
┌──(root㉿kali)-[~]
└─# 

自定义变量

变量赋值:varname=value

变量引用:${varname},$varname

双引号,变量名会替换为变量值

单引号识别为普通字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值