码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本总结

时间:2018-03-24 20:43:09      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:基础知识

shell脚本总结

数组

索引数组的几个常见用法

array[0] array数组的第一个值
array[*] array数组的所有值
#array[*] array数组里数值的个数
unset array[0] 删除array数组里的第一个值
unset array 删除掉array整个数组

技术分享图片
技术分享图片

数组切片:

    ${array[@]:num1:num2}
    num1:要跳过的元素个数
    num2:要取出的元素个数
    取偏移量之后的所有元素
        ${arrray[@]:num1} 

技术分享图片

数组脚本练习:
1.编写脚本,定义一个数组,数组中的元素是/var/log目录下所有以.log结尾的文件;统计出其下标为偶数的文件中的行数之和
#!/bin/bash
array=(/var/log/.log)
echo ${array[]}
sum=0
for i in $(seq 0 $[${#array[
]}-1]);do
if [ $[$i%2] -eq 0 ];then
num=$(cat ${array[$i]}| wc -l )
sum=$[$sum+$num]
fi
done
echo $sum

2.输入若干个数值存入数组中,采用冒泡法进行升序或降序排序

[root@localhost 0323]# cat MaoPao 
#!/bin/bash
i=0
flag=0
wrong=0
#--------------------------------------------保存数组值---------------------------------------------
while true;do
    read -p "请输入数字(输入quit退出):" num
    if [[ "$num" == ^"" ]];then
        echo "请输入数字 你已经输错了$wrong 次"
        let wrong++
    fi
    if [ $wrong -eq 5 ];then
        echo "你居然能输错 $wrong 次 我受不了你了"
        break
    elif [[ $num == quit ]];then
                                break
    elif [[ $num =~ ^[-]{0,1}[[:digit:]]{0,}[.]{0,1}[[:digit:]]{0,}[[:digit:]]$ ]];then #筛选出 整数 小数 负数
        echo $num
        array[$i]=$num
        let i++
    else
        echo "请输入数字 你已经输错了$wrong 次"
        let wrong++
    fi
done

#---------------------------------------------比较两个数大小------------------------------------------
compare () {
    echo $1 > /app/0324/tmp
    echo $2 >> /app/0324/tmp
    max=$(cat /app/0324/tmp|sort -nr|head -1)
    if [[ "$max" == "$1" ]];then
        flag=1
    else
        flag=0
    fi
}

#-------------------------------------------冒泡排序---------------------------------------------------
length=${#array[*]}
for i in $(seq 0 $length);do
    for j in $(seq 0 $[$length-$i]);do
        t=$[$j+1]
        compare ${array[$j]} ${array[$t]}
        if [ $flag -eq 1 ];then
             temp=${array[$j]}
             array[$j]=${array[$t]}
             array[$t]=$temp
        fi
done
done
echo "从小到大排序为:${array[*]}"

最终结果图
技术分享图片
3.实现矩阵转置

        #!/bin/bash
        #------------------------------------------输入矩阵---------------------------------------------------
    read -p "请输入矩阵的行列数" raw
    t=0
    for i in $(seq 0 $[$raw-1]);do
        for j in $(seq 0 $[$raw-1]);do
            read -p "输入矩阵的值" value
             array[$t]=$value
             let t++
        done
    done

#------------------------------------------计算矩阵的中间位置 -------------------------------------------------------------
    juzhen3 (){
    t=0
    if [ $[$raw%2] -eq 0 ];then
        flag=$[$raw/2]
    else
        flag=$[$[$raw+1]/2]
    fi
#------------------------------------------输出原矩阵--------------------------------------------------

    for i  in $(seq 0 $[$raw-1]);do
        u=$i
                    for j in $(seq 0 $[$raw-1]);do
                                    echo -e "${array[$t]} \c"
                                    let t++
                    done

#------------------------------------------输出中间的传递符号---------------------------------------
        if [ $[$i+1] -eq $flag ];then
            echo -e "   \c"
            for m in $(seq 1 $raw);do
                echo -e "=\c"
            done
            echo -e ">    \c"
        else
            echo -e "    \c"        
            for m in $(seq 1 $[$raw]);do
                                                    echo -e " \c"
                                    done
            echo -e "    \c"
        fi  
        #------------------------------------------输出转置矩阵------------------------------------------------
        for j in $(seq 0 $[$raw-1]);do
                                    echo -e "${array[$u]} \c"
                                    let u=$[$u+$raw]
                    done
                    echo
    done
    unset t i
    }
    juzhen3

最终结果图:
技术分享图片

字符串切片

几个常见用法
技术分享图片
技术分享图片

eval命令

eval第一个功能就是可以对命令进行所有的置换,然后再执行该命令。
技术分享图片
技术分享图片
第二个功能就是进行标量的多重赋值
技术分享图片
技术分享图片

shell脚本总结

标签:基础知识

原文地址:http://blog.51cto.com/13572413/2090719

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!