shell

本文介绍了Shell脚本的基础知识,包括编写与执行脚本、变量与引用、参数传递,以及流程控制结构如if-else和循环。通过实例展示了如何解压并部署JDK,还探讨了数组的使用。此外,文章提到了shell脚本的调试方法,并列举了awk和sed两个命令的用途。
摘要由CSDN通过智能技术生成

shell : 
    1.编程语言
    2.可以执行的文件
    2.文件内容:就是linux命令组成在一起的

1.入门:
    shell脚本: xxx.sh 

    1.编写脚本
    vim wc.sh
    2.赋予脚本权限
    chmod 744 wc.sh
    3.执行脚本
        #!/bin/bash  =》 编写 =》 bin/bash执行器  bash 

        sh xx.sh

    1.编写脚本
        vim wc.sh
    2.执行脚本
        sh xx.sh

    执行脚本:
        1.赋予权限 
            ./xx.sh    【绝对路径、相对路径】
            sh xx.sh  【绝对路径、相对路径】
        2.没有赋予权限
            sh xx.sh

2.变量与引用
    1.变量

    [root@gh04 shell]# cat variable.sh 
    name="zuoshao"
    dt="date"
    dt1=`date`

    echo $name
    echo $dt
    echo $dt1

    赋予权限:
    [root@gh04 shell]# chmod u+x ./variable.sh

    shell变量: shell里面变量类型默认只有一种 string
        1.定义 : 
            k=v 
        2.分类:
            1.静态变量
                k=v k="v" k='v' 
            2.动态变量
                k=`v`
                v: 
                    1.变量
                    2.系统命令
        注意:
            1.= 前后不能有空格
            2.变量名字 都是大写 【规范】
            3.定义变量的时候 建议使用 {}

    2.引用: 
        $xx 
        ${xx}

3.传递参数

$n  想脚本传递参数 
    1.n 代表一个数字
1.
[root@gh04 shell]# cat parameter.sh 
echo "第一个参数:$1"
echo "第二个参数:$2"

2.
[root@gh04 shell]# cat parameter.sh 
echo "文件名:$0"
echo "第一个参数:$1"

echo "第二个参数:$2"
echo "参数的个数:$#"
echo "传递的参数作为一个字符串:$*"
echo "脚本运行时候的pid为:$$"

3.元素带有空格 ""
[root@gh04 shell]# ./parameter.sh "zuo shao"
文件名:./parameter.sh
第一个参数:zuo shao
第二个参数:
参数的个数:1
传递的参数作为一个字符串:zuo shao
脚本运行时候的pid为:5731


安装软件: 
    1.rpm 
    2.yum 
    3.tar 

rpm -qa | grep -i java | xargs -n1  rpm -e --nodeps

rpm -qa | grep -i java // rpm查询
rpm -e  --nodeps  //rpm卸载


文件名字:
    jdk-8u212-linux-x64.tar.gz

.gz =》 gzip 方式压缩的文件
jdk-8u212-linux-x64.tar =》 tar文件 【归档文件】

jdk-8u212-linux-x64 =》 linux 工具 tar命令 =》 归档文件

部署jdk:

    1.解压
        [root@gh04 software]# tar -zxvf ./jdk-8u212-linux-x64.tar.gz -C ~/app/
    2.部署
        配置环境变量
        vim ~/.bashrc 
        export  JAVA_HOME=/root/app/jdk1.8.0_212
        export PATH=${JAVA_HOME}/bin:${PATH}

        source ~/.bashrc

[root@gh04 jdk1.8.0_212]# ll
总用量 26000
drwxr-xr-x. 2 10 143     4096 4月   2 2019 bin  //jdk 的脚本
drwxr-xr-x. 5 10 143     4096 4月   2 2019 lib


4.数组
    语法格式:
        arr=(v1 v2 v3)

[root@gh04 shell]# cat arr.sh 
arr_name=(zuoshao banzhang haoge)
echo "数组所有元素:${arr_name[@]}"
echo "第二个元素:${arr_name[1]}"
echo "数组的大小:${#arr_name[@]}"

5.流程控制 
if else 
    语法格式
    if contdition ;then
        cmd ;
    else 
        cmd; 
    fi

contdition:
    [ 条件表达式 ]

    1、值判断
            数值类型和字符串
        =
        == 
            数值类型
        -lt  less 小于
        -le  less equals 小于等于 
        -gt  大于 
        -ge  大于等于
        -ne  不等于

案例: 
[root@gh04 shell]# cat if.sh 
name1="zuoshao"
name2="xuanxuan"

if [ ${name1} == ${name2} ];then
    echo "${name1} == ${name2}"
else
    echo "${name1} != ${name2}"
fi

思考: 
    shell 里面能不能debug?

    1.直接执行
        ./if.sh
    2.debug模式
        1.常用
        sh -x ./if.sh
        2.脚本里面 
            #!/bin/bash -x 

    if contdition ;then
        cmd ;
    elif contdition ;then
        cmd;
    else 
        cmd; 
    fi

案例: 
    [root@gh04 shell]# cat elif.sh 
input=$1

    if [ ${input} -gt 90 ];then
            echo "男神"
    elif [ ${input} -ge 60 ];then
            echo "轩轩"
    else
            echo "屌丝"
    fi

循环: 
    for while 

for: 
    语法格式: 
    for xx in arr 
    do
        cmd;
    done

[root@gh04 shell]# cat forwhile.sh 
for x in 1 2 3 4 5
do
    echo $x
done

for((i=1;i<=10;i++));  
do   
    echo ${i}
done

while: 
    while(条件)
    do 
        cmd;
    done

案例:
[root@gh04 shell]# cat forwhile.sh 
for x in 1 2 3 4 5
do
    echo $x
done

echo "------------"

for((i=1;i<=10;i++));  
do   
    echo ${i}
done
echo "------------"

a=0
while(($a <=5))
do
    echo "$a"
    let a++;
done

案例:
    遍历字符串数组

1.语法
function 
Switch case 

2.两个命令 
    awk 
    sed 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值