
本文转自 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的脚本:
执行./paramtest a b
的结果是打印出第1个和第2个参数:
但是,若脚本需要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个参数是不对的:
显然$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
,结果正确: