您的位置:首页 > 运维架构 > Shell

Shell学习笔记二(基本语法)

2014-05-05 17:40 274 查看

Shell 数组

       Linux Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。

       bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

 定义数组:

在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)

例如:

array_name=(value0 value1 value2 value3)


或者:

array_name[0]=value0
array_name[1]=value1
array_name
=valuen


读取数组:

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

array_name
=valuen
echo v=${array_name
} #输出valuen

使用@符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}


获取数组的长度:

array_name=(value0 value1 value2 value3)                                                             # 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name
}


Shell 的echo 指令

echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。

如果变量与其它字符相连的话,需要使用大括号({ }):

mouth=5
echo "${mouth}-5-2014"


显示换行:

echo "OK!\n"
echo "It is a test"


显示不换行:

echo "OK!\c"
echo "It is a test"


显示结果定向到文件

echo "It is a test" > myfile


Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

数值测试

参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo 'The two numbers are equal!'
else
echo 'The two numbers are not equal!'
fi


字符串测试

参数说明
=等于则为真
!=不相等则为真
-z 字符串字符串长度伪则为真
-n 字符串字符串 字符串长度不伪则为真
num1=100
num2=100
if test num1=num2
then
echo 'The two strings are equal!'
else
echo 'The two strings are not equal!'
fi

文件测试

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c 文件名如果文件存在且为字符型特殊文件则为真
-b 文件名如果文件存在且为块特殊文件则为真
   

cd /bin
if test -e ./bash
then
echo 'The file already exists!'
else
echo 'The file does not exists!'
fi


另外,Shell还提供了与( ! )、或( -o )、非( -a )三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。例如:

cd /bin
if test -e ./notFile -o ./bash
then
echo 'One file exists at least!'
else
echo 'Both dose not exists!'
fi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: