栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell脚本语法整理(1)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell脚本语法整理(1)

临时被安排写一个脚本。把这次用到的相关语句记录一下。

1、case语句.

用于对脚本输入参数进行检验。
注意shell内的case语句与C语言中不同,只会匹配第一个符合的条件。而C语言中不加break,就会一直往下运行。
if内需要空格,并且等号用单个等号即可。

#!/bin/bash
function parameter_judgement()
{
    case $# in
        0)
            echo "Please run this shell with parameters again"
            echo "  -mode     to select mode. You can use master or slave"
            echo "  For example"
            echo "      sh test.sh -mode master"
            exit 1
        ;;
        2)
            if [ "$1" = "-mode" ]; then
                echo "mode = $2"
            else
                echo "wrong parameters"
                exit 1
            fi
        ;;
        *)
            echo "wrong parameters"
            exit 1
    esac
}
parameter_judgement $1 $2

最后调用函数时,一定要记得传参,用几个传几个。我本身脚本是用了8个的。此处简略为2个。
运行结果,带参数与不带参数的。

2、字符串截取
#!/bin/bash
LOCAL_IP="192.168.120.3"
endIp=${LOCAL_IP##*.}
echo $endIp

运行结果为3。
该语句是为了截取最后一个"."右侧的内容。
切记大括号内的变量名前面不需要$符号。在这里踩了一次坑。
其他的我暂时没用到,但是查到了,就先记一下。

#!/bin/bash
var="192.168.120.3"
# 1、#号截取, 表示获取第一个.之后的字符串。(此条包括以下截取均不包括.本身)
echo ${var#*.}

# 2、## 号截取,获取最后一个.之后的字符串。
echo ${var##*.}

# 3、 %号截取,获取最后一个.之前的字符串。
echo ${var%.*}

# 4. %% 号截取,获取第一个.左侧的字符串。
echo ${var%%.*}

# 5. 获取前五个字符
echo ${var:0:5}

# 6. 获取从左边第4个字符开始,一直到结束。
echo ${var:3}

# 7. 获取从右边第4个字符开始的3个字符
echo ${var:0-4:3}

# 8. 从右边第7个字符开始,一直到结束。
echo ${var:0-7}

运行结果为

168.120.3
3
192.168.120
192
192.1
.168.120.3
20.
8.120.3
3、bc进制转化
#!/bin/bash
endIp=101
hexIp=$(echo "obase=16;ibase=10;$endIp"|bc)
echo $hexIp

此处为10进制转16禁止。其他可以类比。
主要是获取bc执行结果,尝试过很多写法,比如$("obase=16;ibase=10;$endIp"|bc),或者用反引号取值"obase=16;ibase=10;$endIp"|bc之类的,都不对,没想到要把echo也带上。
4、sed进行文件的修改

#!/bin/bash
MASTER_IP="192.168.120.3"
masterIpLine="       "MASTER_IP" : "$MASTER_IP:40010","
sed -i "9c\$masterIpLine" test.json

其中包含:
(1)sed命令中参数内带有变量引用的处理。
sed后的参数,一般查到的教程中使用单引号,但是当需要替换的语句中含有变量时,需要更改为双引号,然后在语句本身的“以及取值所用的$之前加""进行转义。
(2)sed在用c参数进行替换时,只会把替换之后的内容进行输出,而并没有直接写入文件中。因此需要增加-i参数,讲改动写入文件中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/680694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号