Linux学习day3 --shell脚本、条件判断语句、 switch/case语句、参数解析、

shell和shell script

  1. shell
    从程序员的角度来看,Shell本身是一种用C语言编写的程序、从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。
    Linux的Shell种类众多,常见的有:Bourne Shell (/usr/bin/sh或/bin/sh)、 Bourne Again Shell(/bin/bash) 、C Shell (/usr/(bin/csh)、K Shell (lusr/bin/ksh) 、Shell for Root (/sbin/sh) ,等等。不同的Shell语言的语法有所不同**,所以不能交换使用**。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。在本文中,我们关注的重点是Bash,也就是Bourne AgainShell,由于易用和免费,Bash在日常工作中被广泛使用:同时,Bash也是大多数Linux系统默认的Shell
  2. shell script
    Shell script是利用shell的功能所写的一个“程序",这个程序是使用纯文本文件,将一些LinuxShell的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。Shell script提供数组、循环、条件与逻辑判断等重要功能,让用户也可以直接以shell来编写程序,而不必使用类似C程序来完成相关功能。

shell例子

shell对变量取值要在变量前加$
shell代码中,不能随便使用空格,shell会作为命令行进行执行,有空格的话,会把命令行解析为选项、参数的形式
在这里插入图片描述

执行的两种方式

bash hello.sh
在这里插入图片描述
./hello,sh权限不够时,要添加执行的权限
在这里插入图片描述

条件判断语法

condition.sh

#!/bin/bash

SYSTEM=`uname -s` #命令置换符,把执行结果传给SYSTEM

if [ $SYSTEM=="Linux" ] ;then #中括号两边都要有空格
    echo "Linux"
elif [ $SYSTEM=="Windows" ];then
    echo "Windows"
else
    echo "Unkown System"
fi

运行结果:
在这里插入图片描述

条件判断比较符

1.数值比较:gt(大于)、lt(小于)、eq(等于)、le(小于等于)、ge(大于等于)
2.字符串比较
str1 = str2:当两个串有相同内容时为真
str1 != str2:当串str1和str2不等时为真
-n str1:当串钓长度大于0时为真(串非空)
-z str1:当串的长度为0时为真(空串)
str1:当串str1为非空时为真

3.文件判断
-r file:用户可读为真
-w file:用户可写为真
-x file:用户可执行为真
-f file:文件为正规文件为真
-d file:文件为目录为真
-c file:文件为字符设备文件为真
-b file:文件为块设备文件为真
-s file:文件大小非O时为真
4.逻辑判断

-a :与
-o :或
!:非

switch/case语句

case expression in
    pattern1)
        statement1
        ;;
    pattern2)
        statement2
        ;;
    pattern3)
        statement3
        ;;
    ……
    *)
        statementn
esac

shell 循环

for i in seq 1 10; do  #循环的列表
xx 
done
while [ condition ] ;do #中括号要有空格

done

参数解析

$#:参数个数
$*:参数列表
$1:第一个参数
解析命令行的例子:

#test.sh
#!/bin/bash

while [ -n "$1" ]
    do
        case "$1" in
            -a|--account)
                echo "param a"
	        a="$2"
                echo $a
                shift 2
                ;;
            -s|--server)
                echo "param s"
                s="$2"
                echo $s
                shift 2
                ;;
            -h|--help)
                usage
                return 0
                ;;
            --)
                shift
                break
                ;;
            *)
                return 1
                ;;
        esac
    done

shell调试

set -x 与set +x:打开和关闭调试,显示这两段语句之间的变量结果
sh -x xxx.sh :运行的所有变量都显示

段注释

:<<EOF  
xxxx
EOF

用source 让ini格式的文件shell脚本中生效

这样可以直接使用ini配置文件的变量,对变量进行更改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值