shell脚本总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本总结相关的知识,希望对你有一定的参考价值。

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.输入若干个数值存入数组中,采用冒泡法进行升序或降序排序

[[email protected] 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脚本总结的主要内容,如果未能解决你的问题,请参考以下文章

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

常用python日期日志获取内容循环的代码片段

Linux中执行shell脚本的4种方法总结

Linux中执行shell脚本的4种方法总结

Linux中执行shell脚本命令的4种方法总结

shell脚本引用expect