问题
bash
[code@samba ~]$ array3=(`ls axel-2.4`)
[code@samba ~]$ echo $array3
API
[code@samba ~]$ ls axel-2.4
API CHANGES conn.o gui README tcp.o
axel conf.c COPYING http.c ru.mo text.c
axel.1 conf.h CREDITS http.h ru.po text.o
axel.c config.h de.mo http.o search.c zh_CN.mo
axel.h configure de.po Makefile search.h zh_CN.po
axel.o conf.o ftp.c Makefile.settings search.o
axelrc.example conn.c ftp.h nl.mo tcp.c
axel_zh_CN.1 conn.h ftp.o nl.po tcp.h

bash
[code@samba ~]$ echo $array3
API
[code@samba ~]$ ls axel-2.4
API CHANGES conn.o gui README tcp.o
axel conf.c COPYING http.c ru.mo text.c
axel.1 conf.h CREDITS http.h ru.po text.o
axel.c config.h de.mo http.o search.c zh_CN.mo
axel.h configure de.po Makefile search.h zh_CN.po
axel.o conf.o ftp.c Makefile.settings search.o
axelrc.example conn.c ftp.h nl.mo tcp.c
axel_zh_CN.1 conn.h ftp.o nl.po tcp.h
[code@samba ~]$ echo $array3[@]
API[@]
[code@samba ~]$ echo "${array3[@]}"
API axel axel.1 axel.c axel.h axel.o axelrc.example axel_zh_CN.1 CHANGES conf.c conf.h config.h configure conf.o conn.c conn.h conn.o COPYING CREDITS de.mo de.po ftp.c ftp.h ftp.o gui http.c http.h http.o Makefile Makefile.settings nl.mo nl.po README ru.mo ru.po search.c search.h search.o tcp.c tcp.h tcp.o text.c text.o zh_CN.mo zh_CN.po
() {} []
变量
有类型变量
declare [选项] a=1
[选项] -i
declare -i a=1
变量整数
bash
[code@samba ~]$ echo $name
3.10.0-1160.el7.x86_64
[code@samba ~]$ a=10
[code@samba ~]$ b=20
[code@samba ~]$ echo $a+$b
10+20
[code@samba ~]$ declare -i a=10
[code@samba ~]$ declare -i b=20
[code@samba ~]$ declare -i c=$a+$b
[code@samba ~]$ echo $c
30
-x
定义环境变量
declare -x b=1
env |grep b
bash
[code@samba ~]$ AAA=hello
[code@samba ~]$ export AAA
[code@samba ~]$ env|grep AAA
AAA=hello
[code@samba ~]$ declare -x BBB=hello
[code@samba ~]$ env|grep BBB
BBB=hello
数组
定义
array[0]=a
a=array3[a,bm,c,s,s]
a=arrayd{ls ./
}
a=array4[var1 var3 var4 var5]
array3=(a,bn,s,cs)
array4=( ls ./
)
array5=(var1 var3 var4)
array6=(a v s d [10]=linux)
bash
[code@samba ~]$ array[0]=v1
[code@samba ~]$ array[1]=v2
[code@samba ~]$ array[3]=v3
[code@samba ~]$ array=(var1 var2 var3 var4)
[code@samba ~]$ array1=(`cat /etc/passwd`)
[code@samba ~]$ echo $array1
root:x:0:0:root:/root:/bin/bash
[code@samba ~]$ array2=(`ls /root`)
ls: 无法打开目录/root: 权限不够
[code@samba ~]$ ls
1.sh axel-2.4.tar.gz inotify-tools-3.13.tar.gz 视频 桌面
apr-1.5.2.tar.bz2 bash_var.sh mysql-5.6.31.tar.gz 图片
apr-util-1.5.4.tar.bz2 httpd-2.4.37.tar.bz2 nohup.out 文档
axel-1.0a.tar.gz inotify.sh 公共 下载
axel-2.4 inotify-tools-3.13 模板 音乐
[code@samba ~]$ mkdir 1
[code@samba ~]$ ls
1 axel-2.4 inotify-tools-3.13 模板 音乐
1.sh axel-2.4.tar.gz inotify-tools-3.13.tar.gz 视频 桌面
apr-1.5.2.tar.bz2 bash_var.sh mysql-5.6.31.tar.gz 图片
apr-util-1.5.4.tar.bz2 httpd-2.4.37.tar.bz2 nohup.out 文档
axel-1.0a.tar.gz inotify.sh 公共 下载
[code@samba ~]$ array2=(`ls /1`)
ls: 无法访问/1: 没有那个文件或目录
[code@samba ~]$ array2=(`ls 1`)
[code@samba ~]$ echo $array2
[code@samba ~]$ array3=(`ls axel-2.4`)
[code@samba ~]$ echo $array3
API
读取
全部元素
echo ${array3[@]}
echo ${array4[*]}
数组索引
echo ${!array5[@]}
指定索引下标
echo ${array6[2]}
echo ${array[5]:2:3}
读取array5从2开始后面3个元素
bash
[code@samba ~]$ echo "${array3[@]}"
API axel axel.1 axel.c axel.h axel.o axelrc.example axel_zh_CN.1 CHANGES conf.c conf.h config.h configure conf.o conn.c conn.h conn.o COPYING CREDITS de.mo de.po ftp.c ftp.h ftp.o gui http.c http.h http.o Makefile Makefile.settings nl.mo nl.po README ru.mo ru.po search.c search.h search.o tcp.c tcp.h tcp.o text.c text.o zh_CN.mo zh_CN.po
[code@samba ~]$ array3=(harry a j "1")
[code@samba ~]$ array4=(1 2 3 4 "hello world" [10]=linux)
[code@samba ~]$ echo ${array4[0]}
1
[code@samba ~]$ echo ${array4[@]}
1 2 3 4 hello world linux
[code@samba ~]$ echo ${array4[#]}
-bash: #: 语法错误: 期待操作数 (错误符号是 "#")
[code@samba ~]$ echo ${array4[*]}
1 2 3 4 hello world linux
[code@samba ~]$ echo ${!array4[@]}
0 1 2 3 4 10
[code@samba ~]$ echo ${!array4[@]}
0 1 2 3 4 10
[code@samba ~]$ echo ${!array3[@]}
0 1 2 3
[code@samba ~]$ echo ${array4[@]:1:2}
2 3
[code@samba ~]$ echo ${array3[@:3:3]}
-bash: @:3:3: 语法错误: 期待操作数 (错误符号是 "@:3:3")
[code@samba ~]$ echo ${array3[@]:3:3}
1
[code@samba ~]$ echo ${array3[@]}
harry a j 1
[code@samba ~]$ echo ${array3[@]:1:2}
a j
declare -a
查看普通数组信息
bash
[code@samba ~]$ declare -a
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -ar BASH_REMATCH='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a array='([0]="var1" [1]="var2" [2]="var3" [3]="var4")'
declare -a array1='([0]="root:x:0:0:root:/root:/bin/bash" [1]="bin:x:1:1:bin:/bin:/sbin/nologin" [2]="daemon:x:2:2:daemon:/sbin:/sbin/nologin" [3]="adm:x:3:4:adm:/var/adm:/sbin/nologin" [4]="lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin" [5]="sync:x:5:0:sync:/sbin:/bin/sync" [6]="shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown" [7]="halt:x:7:0:halt:/sbin:/sbin/halt" [8]="mail:x:8:12:mail:/var/spool/mail:/sbin/nologin" [9]="operator:x:11:0:operator:/root:/sbin/nologin" [10]="games:x:12:100:games:/usr/games:/sbin/nologin" [11]="ftp:x:14:50:FTP" [12]="User:/var/ftp:/sbin/nologin" [13]="nobody:x:99:99:Nobody:/:/sbin/nologin" [14]="systemd-network:x:192:192:systemd" [15]="Network" [16]="Management:/:/sbin/nologin" [17]="dbus:x:81:81:System" [18]="message" [19]="bus:/:/sbin/nologin" [20]="polkitd:x:999:998:User" [21]="for" [22]="polkitd:/:/sbin/nologin" [23]="libstoragemgmt:x:998:995:daemon" [24]="account" [25]="for" [26]="libstoragemgmt:/var/run/lsm:/sbin/nologin" [27]="colord:x:997:994:User" [28]="for" [29]="colord:/var/lib/colord:/sbin/nologin" [30]="rpc:x:32:32:Rpcbind" [31]="Daemon:/var/lib/rpcbind:/sbin/nologin" [32]="saned:x:996:993:SANE" [33]="scanner" [34]="daemon" [35]="user:/usr/share/sane:/sbin/nologin" [36]="gluster:x:995:992:GlusterFS" [37]="daemons:/run/gluster:/sbin/nologin" [38]="saslauth:x:994:76:Saslauthd" [39]="user:/run/saslauthd:/sbin/nologin" [40]="abrt:x:173:173::/etc/abrt:/sbin/nologin" [41]="setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin" [42]="rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin" [43]="pulse:x:171:171:PulseAudio" [44]="System" [45]="Daemon:/var/run/pulse:/sbin/nologin" [46]="radvd:x:75:75:radvd" [47]="user:/:/sbin/nologin" [48]="chrony:x:992:987::/var/lib/chrony:/sbin/nologin" [49]="unbound:x:991:986:Unbound" [50]="DNS" [51]="resolver:/etc/unbound:/sbin/nologin" [52]="qemu:x:107:107:qemu" [53]="user:/:/sbin/nologin" [54]="tss:x:59:59:Account" [55]="used" [56]="by" [57]="the" [58]="trousers" [59]="package" [60]="to" [61]="sandbox" [62]="the" [63]="tcsd" [64]="daemon:/dev/null:/sbin/nologin" [65]="sssd:x:990:984:User" [66]="for" [67]="sssd:/:/sbin/nologin" [68]="usbmuxd:x:113:113:usbmuxd" [69]="user:/:/sbin/nologin" [70]="geoclue:x:989:983:User" [71]="for" [72]="geoclue:/var/lib/geoclue:/sbin/nologin" [73]="ntp:x:38:38::/etc/ntp:/sbin/nologin" [74]="gdm:x:42:42::/var/lib/gdm:/sbin/nologin" [75]="rpcuser:x:29:29:RPC" [76]="Service" [77]="User:/var/lib/nfs:/sbin/nologin" [78]="nfsnobody:x:65534:65534:Anonymous" [79]="NFS" [80]="User:/var/lib/nfs:/sbin/nologin" [81]="gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin" [82]="sshd:x:74:74:Privilege-separated" [83]="SSH:/var/empty/sshd:/sbin/nologin" [84]="avahi:x:70:70:Avahi" [85]="mDNS/DNS-SD" [86]="Stack:/var/run/avahi-daemon:/sbin/nologin" [87]="postfix:x:89:89::/var/spool/postfix:/sbin/nologin" [88]="tcpdump:x:72:72::/:/sbin/nologin" [89]="caozx26:x:1000:1000:caozx26:/home/caozx26:/bin/bash" [90]="code:x:1001:1001::/home/code:/bin/bash" [91]="rsync:x:1002:1002::/home/rsync:/sbin/nologin" [92]="apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin" [93]="user01:x:1003:1003::/home/user01:/bin/bash" [94]="u02:x:1004:1005::/home/u02:/bin/bash" [95]="u03:x:13:48::/home/u03:/bin/bash" [96]="mysql:x:987:981::/home/mysql:/sbin/nologin")'
declare -a array2='()'
declare -a array3='([0]="harry" [1]="a" [2]="j" [3]="1")'
declare -a array4='([0]="1" [1]="2" [2]="3" [3]="4" [4]="hello world" [10]="linux")'
命令
a=ls ./
a=$[ ]
a=$()
bash
[code@samba ~]$ kernel=`uname -r`
[code@samba ~]$ echo $kernal
[code@samba ~]$ uname -r
3.10.0-1160.el7.x86_64
[code@samba ~]$ kernel=`uname -r`
[code@samba ~]$ echo $kernel
3.10.0-1160.el7.x86_64
[code@samba ~]$ name=$(uname -r)
[code@samba ~]$ echo $name
3.10.0-1160.el7.x86_64
笔记
bash
┌──────────────────────────────────────────────────────────────────────┐
│ • MobaXterm Personal Edition v23.2 • │
│ (SSH client, X server and network tools) │
│ │
│ ⮞ SSH session to code@192.168.235.10 │
│ • Direct SSH : ✓ │
│ • SSH compression : ✓ │
│ • SSH-browser : ✓ │
│ • X11-forwarding : ✓ (remote display is forwarded through SSH) │
│ │
│ ⮞ For more info, ctrl+click on help or visit our website. │
└──────────────────────────────────────────────────────────────────────┘
Last login: Sun Aug 3 15:31:49 2025 from 192.168.235.1
[code@samba ~]$ hostname
samba.web.cn
[code@samba ~]$ kernel=`uname -r`
[code@samba ~]$ echo $kernal
[code@samba ~]$ uname -r
3.10.0-1160.el7.x86_64
[code@samba ~]$ kernel=`uname -r`
[code@samba ~]$ echo $kernel
3.10.0-1160.el7.x86_64
[code@samba ~]$ name=$(uname -r)
[code@samba ~]$ echo $name
3.10.0-1160.el7.x86_64
[code@samba ~]$ a=10
[code@samba ~]$ b=20
[code@samba ~]$ echo $a+$b
10+20
[code@samba ~]$ declare -i a=10
[code@samba ~]$ declare -i b=20
[code@samba ~]$ declare -i c=$a+$b
[code@samba ~]$ echo $c
30
[code@samba ~]$ AAA=hello
[code@samba ~]$ export AAA
[code@samba ~]$ env|grep AAA
AAA=hello
[code@samba ~]$ declare -x BBB=hello
[code@samba ~]$ env|grep BBB
BBB=hello
[code@samba ~]$ array[0]=v1
[code@samba ~]$ array[1]=v2
[code@samba ~]$ array[3]=v3
[code@samba ~]$ array=(var1 var2 var3 var4)
[code@samba ~]$ array1=(`cat /etc/passwd`)
[code@samba ~]$ echo $array1
root:x:0:0:root:/root:/bin/bash
[code@samba ~]$ array2=(`ls /root`)
ls: 无法打开目录/root: 权限不够
[code@samba ~]$ ls
1.sh axel-2.4.tar.gz inotify-tools-3.13.tar.gz 视频 桌面
apr-1.5.2.tar.bz2 bash_var.sh mysql-5.6.31.tar.gz 图片
apr-util-1.5.4.tar.bz2 httpd-2.4.37.tar.bz2 nohup.out 文档
axel-1.0a.tar.gz inotify.sh 公共 下载
axel-2.4 inotify-tools-3.13 模板 音乐
[code@samba ~]$ mkdir 1
[code@samba ~]$ ls
1 axel-2.4 inotify-tools-3.13 模板 音乐
1.sh axel-2.4.tar.gz inotify-tools-3.13.tar.gz 视频 桌面
apr-1.5.2.tar.bz2 bash_var.sh mysql-5.6.31.tar.gz 图片
apr-util-1.5.4.tar.bz2 httpd-2.4.37.tar.bz2 nohup.out 文档
axel-1.0a.tar.gz inotify.sh 公共 下载
[code@samba ~]$ array2=(`ls /1`)
ls: 无法访问/1: 没有那个文件或目录
[code@samba ~]$ array2=(`ls 1`)
[code@samba ~]$ echo $array2
[code@samba ~]$ array3=(`ls axel-2.4`)
[code@samba ~]$ echo $array3
API
[code@samba ~]$ ls axel-2.4
API CHANGES conn.o gui README tcp.o
axel conf.c COPYING http.c ru.mo text.c
axel.1 conf.h CREDITS http.h ru.po text.o
axel.c config.h de.mo http.o search.c zh_CN.mo
axel.h configure de.po Makefile search.h zh_CN.po
axel.o conf.o ftp.c Makefile.settings search.o
axelrc.example conn.c ftp.h nl.mo tcp.c
axel_zh_CN.1 conn.h ftp.o nl.po tcp.h
[code@samba ~]$ echo $array3[@]
API[@]
[code@samba ~]$ echo "${array3[@]}"
API axel axel.1 axel.c axel.h axel.o axelrc.example axel_zh_CN.1 CHANGES conf.c conf.h config.h configure conf.o conn.c conn.h conn.o COPYING CREDITS de.mo de.po ftp.c ftp.h ftp.o gui http.c http.h http.o Makefile Makefile.settings nl.mo nl.po README ru.mo ru.po search.c search.h search.o tcp.c tcp.h tcp.o text.c text.o zh_CN.mo zh_CN.po
[code@samba ~]$ array3=(harry a j "1")
[code@samba ~]$ array4=(1 2 3 4 "hello world" [10]=linux)
[code@samba ~]$ echo ${array4[0]}
1
[code@samba ~]$ echo ${array4[@]}
1 2 3 4 hello world linux
[code@samba ~]$ echo ${array4[#]}
-bash: #: 语法错误: 期待操作数 (错误符号是 "#")
[code@samba ~]$ echo ${array4[*]}
1 2 3 4 hello world linux
[code@samba ~]$ echo ${!array4[@]}
0 1 2 3 4 10
[code@samba ~]$ echo ${!array4[@]}
0 1 2 3 4 10
[code@samba ~]$ echo ${!array3[@]}
0 1 2 3
[code@samba ~]$ echo ${array4[@]:1:2}
2 3
[code@samba ~]$ echo ${array3[@:3:3]}
-bash: @:3:3: 语法错误: 期待操作数 (错误符号是 "@:3:3")
[code@samba ~]$ echo ${array3[@]:3:3}
1
[code@samba ~]$ echo ${array3[@]}
harry a j 1
[code@samba ~]$ echo ${array3[@]:1:2}
a j
[code@samba ~]$ declare -a
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -ar BASH_REMATCH='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a array='([0]="var1" [1]="var2" [2]="var3" [3]="var4")'
declare -a array1='([0]="root:x:0:0:root:/root:/bin/bash" [1]="bin:x:1:1:bin:/bin:/sbin/nologin" [2]="daemon:x:2:2:daemon:/sbin:/sbin/nologin" [3]="adm:x:3:4:adm:/var/adm:/sbin/nologin" [4]="lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin" [5]="sync:x:5:0:sync:/sbin:/bin/sync" [6]="shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown" [7]="halt:x:7:0:halt:/sbin:/sbin/halt" [8]="mail:x:8:12:mail:/var/spool/mail:/sbin/nologin" [9]="operator:x:11:0:operator:/root:/sbin/nologin" [10]="games:x:12:100:games:/usr/games:/sbin/nologin" [11]="ftp:x:14:50:FTP" [12]="User:/var/ftp:/sbin/nologin" [13]="nobody:x:99:99:Nobody:/:/sbin/nologin" [14]="systemd-network:x:192:192:systemd" [15]="Network" [16]="Management:/:/sbin/nologin" [17]="dbus:x:81:81:System" [18]="message" [19]="bus:/:/sbin/nologin" [20]="polkitd:x:999:998:User" [21]="for" [22]="polkitd:/:/sbin/nologin" [23]="libstoragemgmt:x:998:995:daemon" [24]="account" [25]="for" [26]="libstoragemgmt:/var/run/lsm:/sbin/nologin" [27]="colord:x:997:994:User" [28]="for" [29]="colord:/var/lib/colord:/sbin/nologin" [30]="rpc:x:32:32:Rpcbind" [31]="Daemon:/var/lib/rpcbind:/sbin/nologin" [32]="saned:x:996:993:SANE" [33]="scanner" [34]="daemon" [35]="user:/usr/share/sane:/sbin/nologin" [36]="gluster:x:995:992:GlusterFS" [37]="daemons:/run/gluster:/sbin/nologin" [38]="saslauth:x:994:76:Saslauthd" [39]="user:/run/saslauthd:/sbin/nologin" [40]="abrt:x:173:173::/etc/abrt:/sbin/nologin" [41]="setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin" [42]="rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin" [43]="pulse:x:171:171:PulseAudio" [44]="System" [45]="Daemon:/var/run/pulse:/sbin/nologin" [46]="radvd:x:75:75:radvd" [47]="user:/:/sbin/nologin" [48]="chrony:x:992:987::/var/lib/chrony:/sbin/nologin" [49]="unbound:x:991:986:Unbound" [50]="DNS" [51]="resolver:/etc/unbound:/sbin/nologin" [52]="qemu:x:107:107:qemu" [53]="user:/:/sbin/nologin" [54]="tss:x:59:59:Account" [55]="used" [56]="by" [57]="the" [58]="trousers" [59]="package" [60]="to" [61]="sandbox" [62]="the" [63]="tcsd" [64]="daemon:/dev/null:/sbin/nologin" [65]="sssd:x:990:984:User" [66]="for" [67]="sssd:/:/sbin/nologin" [68]="usbmuxd:x:113:113:usbmuxd" [69]="user:/:/sbin/nologin" [70]="geoclue:x:989:983:User" [71]="for" [72]="geoclue:/var/lib/geoclue:/sbin/nologin" [73]="ntp:x:38:38::/etc/ntp:/sbin/nologin" [74]="gdm:x:42:42::/var/lib/gdm:/sbin/nologin" [75]="rpcuser:x:29:29:RPC" [76]="Service" [77]="User:/var/lib/nfs:/sbin/nologin" [78]="nfsnobody:x:65534:65534:Anonymous" [79]="NFS" [80]="User:/var/lib/nfs:/sbin/nologin" [81]="gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin" [82]="sshd:x:74:74:Privilege-separated" [83]="SSH:/var/empty/sshd:/sbin/nologin" [84]="avahi:x:70:70:Avahi" [85]="mDNS/DNS-SD" [86]="Stack:/var/run/avahi-daemon:/sbin/nologin" [87]="postfix:x:89:89::/var/spool/postfix:/sbin/nologin" [88]="tcpdump:x:72:72::/:/sbin/nologin" [89]="caozx26:x:1000:1000:caozx26:/home/caozx26:/bin/bash" [90]="code:x:1001:1001::/home/code:/bin/bash" [91]="rsync:x:1002:1002::/home/rsync:/sbin/nologin" [92]="apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin" [93]="user01:x:1003:1003::/home/user01:/bin/bash" [94]="u02:x:1004:1005::/home/u02:/bin/bash" [95]="u03:x:13:48::/home/u03:/bin/bash" [96]="mysql:x:987:981::/home/mysql:/sbin/nologin")'
declare -a array2='()'
declare -a array3='([0]="harry" [1]="a" [2]="j" [3]="1")'
declare -a array4='([0]="1" [1]="2" [2]="3" [3]="4" [4]="hello world" [10]="linux")'
[code@samba ~]$ declare -i d=2
[code@samba ~]$ echo $d
2
[code@samba ~]$ echo ${!array3[@]}
0 1 2 3
[code@samba ~]$ echo ${array}