美文网首页
shell之变量

shell之变量

作者: IT小池 | 来源:发表于2019-05-27 20:07 被阅读0次

shell变量

自定义变量

set:查询当前系统所有的变量
-u 如果设定此选项,调用未声明的变量时会报错(默认无任何提示)

[root@localhost ~]# set

调用未声明的变量时,系统默认输出为空

[root@localhost ~]# echo $aa

[root@localhost ~]# 
使用 -u 之后会提示错误信息
[root@localhost ~]# set -u
[root@localhost ~]# echo $aa
-bash: aa: 为绑定变量
[root@localhost ~]# 
环境变量

有父shell与子shell之说 ,可以使用pstree查看进程树

[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─boltd───2*[{boltd}]
        ├─chronyd
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─dbus-launch
        ├─dnsmasq───dnsmasq
        ├─firewalld───{firewalld}
        ├─gdm─┬─X───9*[{X}]
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dc+
        │     │                 │                 │             │             ├─ibus-engine-sim───2*[{ib+
        │     │                 │                 │             │             └─2*[{ibus-daemon}]
        │     │                 │                 │             └─32*[{gnome-shell}]
        │     │                 │                 ├─gsd-a11y-settin───3*[{gsd-a11y-settin}]
        │     │                 │                 ├─gsd-clipboard───2*[{gsd-clipboard}]
        │     │                 │                 ├─gsd-color───3*[{gsd-color}]
        │     │                 │                 ├─gsd-datetime───2*[{gsd-datetime}]
        │     │                 │                 ├─gsd-housekeepin───2*[{gsd-housekeepin}]
        │     │                 │                 ├─gsd-keyboard───3*[{gsd-keyboard}]
        │     │                 │                 ├─gsd-media-keys───3*[{gsd-media-keys}]
        │     │                 │                 ├─gsd-mouse───2*[{gsd-mouse}]
        │     │                 │                 ├─gsd-power───3*[{gsd-power}]
        │     │                 │                 ├─gsd-print-notif───2*[{gsd-print-notif}]
        │     │                 │                 ├─gsd-rfkill───2*[{gsd-rfkill}]
        │     │                 │                 ├─gsd-screensaver───2*[{gsd-screensaver}]
        │     │                 │                 ├─gsd-sharing───3*[{gsd-sharing}]
        │     │                 │                 ├─gsd-smartcard───4*[{gsd-smartcard}]
        │     │                 │                 ├─gsd-sound───3*[{gsd-sound}]
        │     │                 │                 ├─gsd-wacom───2*[{gsd-wacom}]
        │     │                 │                 ├─gsd-xsettings───3*[{gsd-xsettings}]
        │     │                 │                 └─3*[{gnome-session-b}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gunicorn───gunicorn───{gunicorn}
        ├─ibus-portal───2*[{ibus-portal}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───16*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─nginx───9*[nginx]
        ├─packagekitd───2*[{packagekitd}]
        ├─php-fpm───5*[php-fpm]
        ├─polkitd───6*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─python───5*[{python}]
        ├─rngd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─smbd─┬─cleanupd
        │      ├─lpqd
        │      └─smbd-notifyd
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        ├─udisksd───4*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───{vmtoolsd}
        ├─wpa_supplicant
        └─xdg-permission-───2*[{xdg-permission-}]

当前窗口就是父shell,输入 bash就进入了子shell,可以使用pstree查看进程树

        ├─sshd───sshd───bash───pstree

就是当前执行的 pstree,一个 shell

[root@localhost ~]# bash
        通过 pstree 查看到两个 bash
        ├─sshd───sshd───bash───bash───pstree

自定义变量在子 shell中是看不到的,而全局变量(环境变量)在子 shell 中是可以看到的

查看所有环境变量

[root@localhost ~]# env
查看 PATH 变量
[root@localhost ~]# echo $PATH

设置临时环境变量

[root@localhost ~]# echo "$PATH":/home

位置参数变量

$n: n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如 ${10}
$*: 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@: 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$#: 这个变量代表命令行中所有参数的个数

预定义变量

$? :最后一次执行的命令的返回状态,如果这个变量的值为0,证明一个命令正在执行,如果这个变量的值为非0,则说明上一次命令执行不正确
$$:当前进程的进程号(PID)
$!:后台运行的最后一个进程的进程号(PID)

read接收键盘输入

read [选项] [变量名]
-p '提示信息‘ :在等待 read输入时,输出提示信息
-t 秒数:read 命令会一直等待永魂输入,使用此选项可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行
-s 隐藏输入的数据:适用于机密信息的输入

declare声明变量类型

declare [+/-][选项] 变量名
选项:

  • -:给变量类型设定类型属性
  • +:取消变量 的类型属性
  • -a:将变量声明为数组型
  • -i:将变量声明为整数型(integer)
  • x:将变量声明为环境变量
  • r:将变量声明为只读变量
  • p:显示指定变量的被声明的类型(列出当前系统所有变量的类型)
1.计算两个变量的和
[root@localhost ~]# declare -i cc=$a+$b
2.定义一个数组
[root@localhost ~]# arr[0]=a
[root@localhost ~]# declare -a arr[1]=b
[root@localhost ~]# declare -a arr[1]=b
查看数组
[root@localhost ~]# echo ${arr[*]} 查看所有值
3.声明环境变量
[root@localhost ~]# declare -x test=123
查看一下 test
[root@localhost ~]# declare -p test 

注意:declare -x test=123export作用相似,但是其实是declare命令的作用

相关文章

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • Shell常用命令(md格式方便阅读和复制粘贴)

    Shell Shell中的变量 系统变量 自定义变量 自定义变量规则 Shell特殊变量 运算符 条件判断 基本语...

  • shell第11章shell脚本

    什么是shell? Bash shell: 什么是shell脚本? 变量的介绍: 普通变量介绍: 环境变量介绍: ...

  • shell变量详解

    本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...

  • linux shell中常见的变量含义解释

    linux shell中常见变量含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell...

  • Shell特殊变量

    Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含...

  • Shell变量

    Shell 变量 变量的分类 本地变量 全局变量 shell 内置变量 本地变量 本地变量就是:在当前系统的某个环...

  • bash环境变量

    环境变量是全局变量 自定义变量是局部变量 bash:可以进入当前shell的子shell(当前shell指的是当前...

  • shell脚本语法

    shell文件创建 文件开始需要有标识行: 变量 定义变量时,变量名不加美元符号($),如: 注意,变量名和等号之...

网友评论

      本文标题:shell之变量

      本文链接:https://www.haomeiwen.com/subject/payktctx.html