本文介绍: shellshell scriptshell程序员角度来看,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/bi

shellshell 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

sourceini格式的文件shell脚本生效

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

原文地址:https://blog.csdn.net/qq_44849814/article/details/124645008

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_48476.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注