shell 数组 循环

来源:互联网 发布:适合大学生交友软件 编辑:程序博客网 时间:2024/06/06 03:37
#!/bin/basharray=(1 2 3 4 5) #以括号括起为数组 中间是空格for num in "${array[@]}"  #以这种for打印数组doecho $numdonexxx[0]='a' #第二种定义数组的方法xxx[1]='b'xxx[2]='c'for ((i=0; i<${#xxx[@]};i++)); do # ${#xxx[@]} 返回数组的大小echo ${xxx[i]}  #${xxx[$i]} ${xxx[${i}]} 这两种都可以 通过下标打印数组 数组从0开始done#对目录处理的一些技巧xxx=(`ls`) # ``这里可以包含一些shell命令(~这个键) 这个配合管道命令是很强大的 grep sedfor file in "${xxx[@]}" #用第二种for循环也是可以的doecho $file done #sh相加字符串是非常方便的 直接放到后面就可以了 #单引号和双引号是有区别的 单引号只能放字符串 双引号里面可以解释变量initPath='/a'secPath='/b'thrPath='c'path=${initPath}'/'path=${initPath}${secPath}'/'${thrPath}#对数字的支持可能就比较烦了xxx=2xx=${xxx}-1echo $xx  #输出:2-1echo $(($xxx-1)) #如果是数字运算 外面加上 $(( )) 才会得到正确的结果let "x=xxx+(xx*2)" #let 相当于(()) 这个比较好用echo $xx=$((xxx+(xx*2))) #2种方式相同 如果是数字处理可以不带$  字符串必须要带$ 或 ${}echo $x#declare 可以定义变量的属性declare -i i=1 #定义一个int的变量declare -i sum=0while ((i<10)); do #while循环let sum+=ilet ++idoneecho $sumwhile read line; doecho $linebreak    #shell是支持 break 和 countinue的done#if 语句 判断数字的写法 [ ] 两边都要有空格 -ne 不相等的意思 这里比较的是数字 所以 $(($filesNum-1))这个就要这样写 $((${filesNum}-1)) 都可以if [ "$j" -ne "$(($i-1))" ]||[ "$j" -ne "$(($filesNum-1))" ]; thenelsefi#比较字符串 是否相等if [ "${initPath}" != "${buildPath}" ]; thenelif [ command ]; thenfi#判断目录是否存在if [ ! -d "${buildPath}" ]; thenmkdir $buildPathfi