[ 转]Shell中参数($0,$1,$#,$NF,$@等)的含义
Posted 江湖小女生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 转]Shell中参数($0,$1,$#,$NF,$@等)的含义相关的知识,希望对你有一定的参考价值。
Shell中参数($0,$1,$#,$NF,[email protected]等)的含义
-
发布时间:2018-01-19 来源:网络 上传者:用户
- 摘要:此处仅仅从来记录平时常用的命令的参数。以免下次忘记时及时找到。也方便更多的人。awk$0表示所有$1表示第一个$NF表示最后一个$(NF-1)表示倒数第二个比如:echo‘abcd‘|awk‘{print$0}‘的结果是‘abcd‘echo‘abcd‘|awk‘{print$1}‘的结果是‘a‘echo‘abcd‘|awk‘{print$NF}‘的结果是‘d‘echo‘abcd‘|awk‘{print$(NF-1)}‘的结果是‘c‘function$0当前脚本的文件名或者函数
-
此处仅仅从来记录平时常用的命令的参数。以免下次忘记时及时找到。也方便更多的人。
awk$0表示所有 $1表示第一个 $NF表示最后一个 $(NF-1)表示倒数第二个
比如:
echo ‘a b c d‘ | awk ‘{print $0}‘ 的结果是‘a b c d‘ echo ‘a b c d‘ | awk ‘{print $1}‘ 的结果是‘a‘ echo ‘a b c d‘ | awk ‘{print $NF}‘ 的结果是‘d‘ echo ‘a b c d‘ | awk ‘{print $(NF-1)}‘ 的结果是‘c‘ function$0 当前脚本的文件名或者函数名 $n 传递给脚本或函数的参数。n 表示position。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。比如fuc a b c d, 共4个参数返回的值是就是4 $* 传递给脚本或函数的所有参数。 [email protected] 传递给脚本或函数的所有参数。与$*的区别在于加上”“后,前者是将所有参数合成一个,后者不变 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
#!/bin/bash function bfunc() { echo "$1" } function afunc() { echo "/$0 = ${0}" echo "/$1 = ${1}" echo "/$# = ${#}" echo "/$* = ${*}" echo "/ [email protected] = ${@}" echo "/$$ = ${$}" echo "/"/ [email protected]/" = $(bfunc "${@}")" echo "/"/$*/" = $(bfunc "${*}")" } afunc "a" "b" "c" "d"上述代码的执行结果是:
$0 = ./test.sh $1 = a $# = 4 $* = a b c d [email protected] = a b c d $$ = 44076 " [email protected]" = a "$*" = a b c d可以清晰地看到[email protected] 和$* 的区别了吧.
需要指出的是此处$0 的值是”./test.sh”为文件的名称。当我们把执行从./test.sh 改成source test.sh (或者直接执行afunc a b c d )的时候值就变成了”afunc”,也就是函数名了。
以上是关于[ 转]Shell中参数($0,$1,$#,$NF,$@等)的含义的主要内容,如果未能解决你的问题,请参考以下文章