宇宙初开,天地未分,阴阳合一,无极生太极,太极生两仪。两仪分阴阳,阴阳合太极,太极复混沌。混沌是宇宙力量的本源
退出脚本
我们还可以用一种更优雅的方式来完成,为了向shell表明,命令已经处理完毕,每条运行在shell中的命令都使用一个退出状态,这个退出状态,必须
在这条命令运行完成之后立即查看或使用变量$? 它会改变为shell执行的最后一条命令的退出状态值,无效命令返回的退出状态值为127.对于linux的错误退出。
按照惯例,一条命令成功完成的退出状态是0.如果命令执行错误,那么退出状态就会是一个正整数。
0 命令成功完成
1 通常的未知错误
2 误用shell命令
126 命令无法执行
127 没有找到命令
128 无效的退出参数
128+x 使用linux信号x的致命错误
130 使用ctrl+c终止的命令
$0:shell名
$1:$1是传递给该shell脚本的第一个参数
#${test#123abc}删除从左到右边的123abc
${test#1*c}删除从左到右边删除最长匹配
touch{1,2}=touch 1 ;touch 2
cp file{,.back}
位置参数
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
数组的使用
一。
Bash中,数组变量的赋值有两种方法:
(1) name = (value1 ... valuen) 此时下标从0开始
(2) name[index] = value
a=('echo"$@"') 定义数组
${a[$i]} 引用数组元素
$[$i+1] 引用变量数学计算
echo -n 显示换行
${a[1]} 引用数组元素
下面以一个简单的脚本来说明,脚本内容如下:
#!/bin/bash
#定义数组
A=(a b c def)
#把数组按字符串显示输出
echo ${A[@]}
#屏幕显示:a b c def
#数组的长度表示${#A[*]}
len=${#A[*]}
echo ${#A[*]}
#屏幕显示:4
#改变数组元素的值
A[3]='vivian'
echo ${A[*]}
#屏幕显示:a b c vivian
#循环输出数组元素
i=0
while [ $i -lt $len ]
do
echo ${A[$i]}
let i++
done
#屏幕输出:
# a
# b
# c
# vivian
#循环输出数组元素的另一种写法,注意,在条件中,引用变量一定要用双引号 ,否则报错
for (( j=0; j<"$len"; j=j+1 ))
do
echo ${A[$j]}
done
#循环输出数组元素的另一种写法,注意,${A[*]}不能写成$A ,$A默认是第一个元素,如果A="a b c ded",就可以写$A
for value in ${A[*]}
do
echo $value
done
二。
定义
可以整体定义数组:
ARRAY_NAME=(value0 value1 value2 value3 ...)
或者:
ARRAY_NAME=(
value0
value1
value2
value3
...
)
此时数组的下标默认是从0开始的
还可以单独定义数组的各个分量:
ARRAY_NAME[0]=value0
ARRAY_NAME[1]=value1
ARRAY_NAME[n]=valuen
...
可以不使用连续的下标,而且下标的范围没有限制。
使用
取得数组中的元素:
valuen=${ARRAY_NAME[n]}
取得数组的全部元素:
一次性将数组中所有元素的值得到:
echo ${ARRAY_NAME[@]}
取得数组元素的个数:
length=${#ARRAY_NAME[@]}
或者
length=${#ARRAY_NAME[*]}
取得数组单个元素的长度:
lengthn=${#ARRAY_NAME[n]}
遍历
使用while循环遍历数组:
i=0
length=${#ARRAY_NAME[*]}
while [ $i -lt $length ] ; do
valuei=${ARRAY_NAME[$i]}
...
let i++
done
使用for循环遍历数组:
for value in ${ARRAY_NAME[*]} ; do
valuei=value
...
done
清空
清空单个元素:
ARRAY_NAME[n]=
将整个数组清空:
unset ARRAY_NAME
或者:
ARRAY_NAME=
应该注意unset后的变量不应该加$。
加$会清空以ARRAY_NAME的值为名称的变量。
















