在写脚本时候,有时候需要将从命令行里传的参数两两组合形成一个键值对,肯定有其他其他的写法,这里主要是想通过shift命令的实现。
比如
参数1:host_ip
参数2:127.0.0.1
参数3: user
参数4: root
and so on...
可能这些参数是固定的,也可能是自定义的
固定传参示例
#!/bin/bash function get_key_value() { if [[ -z "$1" ]];then echo "$key=NULL" else echo "$key=$1" fi } function main() { if [[ $# -eq 0 ]];then echo "--------------------------usage------------------------------------" echo " sh $0 [aaa 123] [bbb 123] [ccc 123]" exit fi while [[ $# -gt 0 ]] do key=$1 case $key in aaa) shift get_key_value $1 ;; bbb) shift get_key_value $1 ;; ccc) shift get_key_value $1 ;; *) echo "--------------------------usage------------------------------------" echo " sh $0 [aaa 123] [bbb 123] [ccc 123]" ;; esac shift done } main $@
自定义传参示例
#!/bin/bash function get_key_value() { if [[ -z "$1" ]];then echo "$key=NULL" else echo "$key=$1" fi } function main() { if [[ $# -eq 0 ]];then echo "--------------------------usage------------------------------------" echo " sh $0 [key1 value1 key2 value2 ...]" exit fi while [[ $# -gt 0 ]] do key=$1 shift get_key_value $1 shift done } main $@