变量定义
弱类型不需要关注变量类型,变量和值之间不能有空格,有空格会报错
┌──(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
双引号,变量名会替换为变量值
单引号识别为普通字符串