【Linux学习笔记】44:Shell(bash)中的变量,字符串,数组

太久不用Shell了,已经快忘光了。最近实习很累,今晚有空整合学习以下。

编写和使用Shell

创建.sh文件,第一行:

!#/bin/bash

表示这个文件的默认解释器是bash,这个具体的bash目录可以用which命令查看一下。当然也可以使用bash 文件名的方式解释执行这个文件。

如果想直接运行Shell脚本,可以使用:

chmod +x 文件名

的方式给其赋予执行权限,然后使用绝对或相对路径来直接执行它。

变量

Vim没法打中文,只好写英文注释。坚持用Vim写Shell,这样到真实的生产环境中也会受益吧。

#!/bin/bash

# use variable
a="lzh"
echo $a
echo ${a} # {} can help interceptor to identify the boundary

# make the variable read only
b="sb"
readonly b

# use statement as variable
for i in `dir`; do # or use $(...) replace `...`
        echo -e ${i} "\c" # -e to open escape,\c to not wrap
done
echo ""

# delete variable
c=100
unset c
echo "c="${c}

运行结果:

lzh
lzh
apache-tomcat-8.5.29 hpl-2.1 MyEclipse 模板 文档 桌面 eclipse jdk1.8.0_161 Workspaces 视频 下载 eclipse-workspace lzh.sh 公共的 图片 音乐 
c=

字符串

#!/bin/bash

# distinguish ' and "
sb="lzh"
a='66\"6 ${sb}' # original shape
b="66\"6 ${sb}" # both escape and use variable are allowed
echo a=${a}
echo b=${b}

# joint
a="sb"
b="Lzh"
c="${a}${b}"
echo ${c}

# length
echo ${#c}

# sub string
echo ${c:1:3}

# find index(find char b or z)
echo `expr index "${c}" bz`

运行结果:

a=66\"6 ${sb}
b=66"6 lzh
sbLzh
5
bLz
2

数组

#!/bin/bash

# use space or wrap sign separated
a=("lzh" "is" "sb")
b=(
"yes"
${a}
250
)

# use @ get all elements
for i in ${a[@]}; do
    echo -e ${i} '\c'
done
echo ''

# array is array[0]
echo ${a} = ${a[0]}
# so
for i in ${b[@]}; do
    echo -e ${i} '\c'
done
echo ''

# length
echo ${#b[@]} = ${#b[*]}

运行结果:

lzh is sb 
lzh = lzh
yes lzh 250 
3 = 3

你可能感兴趣的:(Linux)