[ 转]Shell中参数($0,$1,$#,$NF,$@等)的含义
Shell中参数($0,$1,$#,$NF,$@等)的含义
发布时间: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 $* 传递给脚本或函数的所有参数。 aliyunzixun@xxx.com 传递给脚本或函数的所有参数。与$*的区别在于加上”“后,前者是将所有参数合成一个,后者不变 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
#!/bin/bash function bfunc() { echo "$1" } function afunc() { echo "/$0 = ${0}" echo "/$1 = ${1}" echo "/$# = ${#}" echo "/$* = ${*}" echo "/ aliyunzixun@xxx.com = ${@}" echo "/$$ = ${$}" echo "/"/ aliyunzixun@xxx.com/" = $(bfunc "${@}")" echo "/"/$*/" = $(bfunc "${*}")" } afunc "a" "b" "c" "d"
上述代码的执行结果是:
$0 = ./test.sh $1 = a $# = 4 $* = a b c d aliyunzixun@xxx.com = a b c d $$ = 44076 " aliyunzixun@xxx.com" = a "$*" = a b c d
可以清晰地看到aliyunzixun@xxx.com 和$* 的区别了吧.
需要指出的是此处$0 的值是”./test.sh”为文件的名称。当我们把执行从./test.sh 改成source test.sh (或者直接执行afunc a b c d )的时候值就变成了”afunc”,也就是函数名了。
随机推荐
- MapReduce实例2(自定义compare、partition)& shuffle机制
MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...
- Django之Model (ORM)
传统操作数据库 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层 ...
- python自动化之上传文件的3种方法和图片预览
ajax上传文件的三种方法 第一种xhr提交 function xhrSubmit(){ // $('#fafafa')[0] var file_obj = document.getElementBy ...
- Intellij IDEA的激活(2100年你值得拥有)
下载ide官网地址:https://download.jetbrains.com/idea/ideaIU-2018.2.7.exe 安装下一步下一步:进入安装bin目录 首先下载需要破解的jar包链接 ...
- Entity Framework Code First 遭遇主键自动生成问题
4.0后就没有去跟踪后面的版本了.现在直接开始用5.0没想到在做User的GURD时就遭遇insert不进数据问题. ISet<User>.Add(user);_context.SaveC ...
- 【git2】git+码云+webStrom
在[git1]中介绍了Git的安装.webstrom配置Git和GitHub.GitHub项目上传下载的方法. 这篇将一下在[git1]步骤(一)基础上webstorm配置码云 实现项目的上传下载. ...
- Linux Shell常用技巧(六)
十二. 行的排序命令sort: 1. sort命令行选项: 选项 描述 -t 字段之间的分隔符 -f 基于字符排序时忽略大小写 -k 定义排序的域字段,或者是基于域字段的部分数据进行排序 - ...
- OpenJudge 4001:抓住那头牛
题目链接 题解: 这个题可以用广搜来解决,从农夫到牛的走法每次都有三种选择,定义一个队列,把农夫的节点加进队列,然后以这三种走法找牛,队列先进先出,按顺序直到找到牛的位置. 代码: #include& ...
- mysql 系统用户最大文件打开数限制
纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程. 上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意.于是 ...
- Linux系统编译Openssl步骤
参照: https://blog.csdn.net/luckydog612/article/details/80396077 1.提前准备工作 去https://www.openssl.org网站下 ...