問題
[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 ~]$ 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
變量整數
[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
[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)
[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個元素
[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
查看普通數組信息
[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=$()
[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
筆記
┌──────────────────────────────────────────────────────────────────────┐│ ? 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}