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参数,讲改动写入文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值