Shell

一、shell概述:
    什么是shell?
        (1)一个编程语言;
        (2)可执行的文件
        (3)文件内容、linux命令组成
二、shell语法入门
    1.写一个shell命令:
        (1)文件名.sh结尾
        (2)第一行:#!/bin/bash
    2.权限:
        (1)无权限:sh 文件名.sh
            [root@hadoop100 shell]# sh ./wc.sh
            word count
            [root@hadoop100 shell]#cat ./wc.sh
            #!/bin/bash
            echo 'word count'
        (2)给文件执行权限
            [root@hadoop100 shell]# chmod u+x ./wc.sh
            [root@hadoop100 shell]# ./wc.sh
            word count
            [root@hadoop100 shell]# ~/shell/wc.sh
            word count
            [root@hadoop100 shell]# sh ~/shell/wc.sh
            word count
        (3)debug
            [root@hadoop100 shell]# sh -x ./wc.sh
            + echo 'word count'
            word count
            
            #!/bin/bash -x
            echo 'word count'
    3.定义变量(引用)
        (1)定义变量的方式:前后不能用空格、变量名一般都是大写
        (2)变量种类:shell中变量的数据类型都是string
            1)静态:k="v"、k='v'、k=v
            2)动态:k=`v`、v是变量且是系统自带的命令
        (3)引用:$k、${k}(最好用次写法,后面可拼接)
            [root@hadoop100 shell]# a=1
            [root@hadoop100 shell]# echo $a
            1
            [root@hadoop100 shell]# b=2
            [root@hadoop100 shell]# echo ${a}+${b}
            1+2
    4.shell脚本参数传递:(用meavn:num1=$1 num2=$2 java -classpath ./java01-1.0.jar(文件名) com.sygy.Test(项目名.类名) ${num1} ${num2))
        (1)$n(参数排序)echo "传递一个参数:$n":
            1)$#:count
            2)$*/$@:字符串
            3)$$:脚本运行时pid
        (2)传递参数空格作为符号分隔符、参数本身带空格要加引号
    5.数组:
        (1)数组用()表示
        (2)元素间用空格分隔
        (3)取所有元素${数组名[@]}、元素个数在数组名前加#、下标从0开始
    6.流程控制:$?->获取上一个程序运行的结果:成功0、失败非0
        (1)分支:if else(condition:条件判断语法->[ condition ] 结果:非空true、空false 
                      条件表达式:数值判断(-lt小于、-le小于等于、-eq等于、-ge大于等于、-gt大于、-ne不等于)、权限判断(-r、-w、-x)、文件判断(-f、-d、-e)*符号前后要有空格)
            格式:if [ condition ];then        name1="zs"                    if [ ${score} -gt 90 ];then
                    业务代码            name2="ls"                        echo "优秀"
                else                    if[ ${name1} ] == ${name2}];then    elif [ ${score} -ge 60 ];then
                    业务代码                echo "等于"                    echo "良"
                                    else                        else
                                        echo "不等于"                echo  "不及格"
                                                            fi
        (2)循环:for、while、dowhile
            格式:for el in item1 item2...item        for((i=0;i<size;i++))    ()包装条件
                do                        do
                    业务代码(echo "${num}")                    业务代码
                done                        done
                
                i=1
                while((${i}<=5))
                do
                    echo "v is ${i}"(业务代码)
                    let i++
                done
        (3)总结:条件表达式不能用<>
                while、for能用<>,不能用-lt、-gt...
                若( )换为[ ]则应将<>换为-lt、-gt...([ ]->条件判断、( )->数值运算)
                具体参考:https://blog.youkuaiyun.com/taiyang1987912/article/details/39551385?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1
        (4)字符串替换:将字符串内,->/
            eg:    str="linux01,linux02,linux03"
                      arr=(${str//,/ })
                for linux in ${arr[@]}
                do
                    echo ${linux}
                donw
            str.split(",")
    7.awk:获取内容    
        (1)获取列:awk '{print $1}    ->取第一列
        (2)获取行:awk 'NR==1{print}'    ->取第一行
    8.sed:文本替换
        (1)sed -i 's/a/dd/' 文件名    ->将a替换为dd(只替换每行第一次出现的a)
        (2)全局替换:sed -i 's/a/dd/g' 
        (3)若内容中出现/则需要在内容/前面加\转译,否则要将原本/替换为#
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值