[ 转]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”,也就是函数名了。
随机推荐
- FtpWebRequest与FtpWebResponse完成FTP操作
WebRequestMethods.Ftp类: 表示可与 FTP 请求一起使用的 FTP 协议方法的类型. AppendFile 表示要用于将文件追加到 FTP 服务器上的现有文件的 FTP ...
- 如何处理高并发情况下的DB插入
1. 我们需要接收一个外部的订单,而这个订单号是不允许重复的 2. 数据库对外部订单号没有做唯一性约束 3. 外部经常插入相同的订单,对于已经存在的订单则拒绝处理 对于这个需求,很简单我们会用下 ...
- 走向Node与Webpack 之路 - CommonJS 模块化
走向Node与Webpack 之路 - CommonJS 模块化 1. 参考资料 JavaScript 标准参考教程(alpha) CommonJS规范(推荐 - 阮一峰写的) 官方网站 (看半天,不 ...
- python多进程(一)
操作系统进程 Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊.普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复 ...
- ui-sref
angularjs中路由跳转可以在模板页面上使用ui-sref="a-state({param1: value})"; 如果想为当前state的导航按钮添加一个激活class,可以 ...
- 洛谷 P2045 方格取数加强版【费用流】
题目链接:https://www.luogu.org/problemnew/show/P2045 题目描述 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现 ...
- python中string格式化
python中可以对string, int, float等数据类型进行格式化操作.下面举例来说明一些常用操作. 先贴出 python 对 String Formatting Operations 讲解 ...
- AOP的核心:代理与织入
分为两步: 1.动态生成代理类: 2.织入: 2.6 织入(Weaving) 织入是将增强添加到目标的具体连接点上的过程 . AOP 织入方式: 方式 实现 应用编译期织入 特殊的 Java 编译器. ...
- java面向切面编程总结-面向切面的本质
面向切面的本质:定义切面类并将切面类的功能织入到目标类中: 实现方式:将切面应用到目标对象从而创建一个新的代理对象的过程.替换: 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Point ...
- vue2.* 事件结合双向数据绑定、模块化以及封装Storage实现todolist 待办事项 已经完成 和进行中持久化 06
ceshi.vue <template> <div id="app"> <input type='text' v-model='todo' @keyd ...