一、shell获取参数数量
在shell脚本中,我们可以使用$#符号来获取传入参数的数量。它代表的是参数个数,不包括脚本名。
#!/bin/bash echo "The number of parameters is $#"
使用示例:
$ ./test.sh 1 2 3 The number of parameters is 3
二、shell获取集合size
另外一个常见的需求是获取参数列表的长度,可以使用${#array[@]}来获取。注意要加上[@],表示获取数组所有元素的长度。
#!/bin/bash args=("apple" "banana" "peach") echo "The number of arguments is ${#args[@]}"
使用示例:
$ ./test.sh The number of arguments is 3
三、shell获取参数个数
使用shift命令可以使参数左移,每次左移一个位置,将前面的一个参数丢弃,直到所有的参数都被处理完。
#!/bin/bash while [ "$1" != "" ]; do echo "Argument $1" shift done
使用示例:
$ ./test.sh apple banana peach Argument apple Argument banana Argument peach
四、shell获取参数长度
可以使用${#var}获取字符串变量的长度,也可以使用${#@}来获取第一个参数的长度。
#!/bin/bash str="hello world" echo "String length is ${#str}" echo "Length of first argument is ${#@}"
使用示例:
$ ./test.sh apple String length is 11 Length of first argument is 5
五、shell获取参数列表
可以使用$@来获取所有传入的参数列表,也可以使用${array[@]}来获取数组中所有参数。
#!/bin/bash args=("apple" "banana" "peach") echo "Arguments are: ${args[@]}" echo "All arguments are: $@"
使用示例:
$ ./test.sh apple banana peach Arguments are: apple banana peach All arguments are: apple banana peach
六、shell获取参数返回1
使用$?可以获取上一个命令的返回值。
#!/bin/bash echo "This command will return 1" exit 1
使用示例:
$ ./test.sh This command will return 1 $ echo $? 1
七、shell获取参数值
可以通过$1、$2等来获取相应位置的参数值。
#!/bin/bash echo "First argument is $1" echo "Second argument is $2"
使用示例:
$ ./test.sh apple banana First argument is apple Second argument is banana
八、shell获取参数最后一个
可以使用${!#}来获取最后一个参数的值。
#!/bin/bash echo "The last argument is ${!#}"
使用示例:
$ ./test.sh apple banana peach The last argument is peach
九、shell获取参数并写到控制台
使用read命令可以获取用户输入的参数值。
#!/bin/bash echo "Enter your name:" read name echo "Hello, $name"
使用示例:
$ ./test.sh Enter your name: John Hello, John
十、获取多个参数选取
可以使用getopts命令来获取多个参数并选取,使用循环读取所有参数。
#!/bin/bash while getopts ":a:b:" opt; do case $opt in a) arg1="$OPTARG" ;; b) arg2="$OPTARG" ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done echo "arg1 = $arg1, arg2 = $arg2"
使用示例:
$ ./test.sh -a apple -b banana arg1 = apple, arg2 = banana