Linux shell 学习笔记

本文转自 https://www.cnblogs.com/binbinjx/p/5680214.html

配置文件init.properties

1
2
3
ID=123
IP=192.168.3.154
Name=test

方法一,利用sed解析文本,提取配置信息

1
2
3
4
5
6
id=`sed '/^ID=/!d;s/.*=//' init.properties`  
ip=`sed '/^IP=/!d;s/.*=//' init.properties` 
name=`sed '/^Name=/!d;s/.*=//' init.properties` 
echo $id 
echo $ip 
echo $name

方法二,利用eval方法解析

1
2
3
4
5
6
while read line;do  
    eval "$line" 
done < init.properties 
echo $ID 
echo $IP 
echo $Name

方法三,直接将配置信息加载到session的环境变量中

1
2
3
4
5
6
7
8
source init.properties

echo $ID
123
echo $IP
192.168.3.154
echo $Name
test

参数判断

1
2
3
4
5
if [ "$1" = "Y" ]; then
echo "true";
else
echo "false";
fi;

获取本机IP

1
ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2

获取 10+ 参数值

在Shell脚本中,可以用$n的方式获取第n个参数,例如,一个名为paramtest的脚本:

1
2
#!/bin/bash
echo $1 $2

执行./paramtest a b 的结果是打印出第1个和第2个参数:

1
a b

但是,若脚本需要10个以上的参数,直接写数字会有问题。例如,脚本为:

1
2
#!/bin/bash
echo $1 $2 $3 $4 $6 $7 $8 $9 $10

执行./paramtest a b c d e f g h i j,结果如下,第10个参数是不对的:

1
a b c d e f g h i a0

显然$10被解释成了$1+0

解决方法很简单,第10个参数加花括号即可:

1
2
#!/bin/bash
echo $1 $2 $3 $4 $6 $7 $8 $9 ${10}

再次执行./paramtest a b c d e f g h i j,结果正确:

1
a b c d e f g h i j

本文标题:Linux shell 学习笔记

文章作者:王方钢 / Kenny Wang

发布时间:2019年09月08日 - 10:09

最后更新:2019年12月31日 - 10:12

原始链接:https://wangfanggang.com/Linux/shell/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

王方钢 / Kenny Wang wechat
0%