[ 转]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”,也就是函数名了。
随机推荐
- Alpha 冲刺报告(2/10)
Alpha 冲刺报告(2/10) 队名:洛基小队 团队困难汇总:在开始正式编码的时候遇到了很严重的问题,Cocos Creator的教程过少,之前浏览的官网上的教程以为很齐全,但是在最重要的脚本方面还 ...
- 【问题记录】python 函数 传入一个对象返回一个对象值得注意
写了一个函数,这个函数接收一个参数,在函数里面判断这个参数是否为None或者不合法状态, 如果处于不合法状态,则创建一个对象返回, 如果合法直接返回 代码示例如下: def get_mq_connec ...
- linux centos 7.5下 源码编译安装 lua环境
lua 5.3.5 下载安装时发现缺少库 readline 需要添加依赖 yum search readline 看有哪些包 安装带有 devel 字样的 安装无 devel 的非开发包,通常不会自动 ...
- zookeeper_monitor监控
.安装 git clone https://github.com/kwarunek/zookeeper_monitor.git cd zookeeper_monitor/ python setup.p ...
- Apache去掉index.php
把 #LoadModule rewrite_module modules/mod_rewrite.so 前面的#去掉, 再把权限AllowOverride None都改为AllowOverride A ...
- JPA条件查询时间区间用LocalDateTime的问题
@Override public Page<Order> findAll(String outTradeNo, String tradeNo, String mchAppid, Strin ...
- ps命令使用详解
转自:http://blog.csdn.net/lsbhjshyn/article/details/18549869 ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程 ...
- P3183 [HAOI2016]食物链
题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...
- 控制层方法中获取url目录
控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...
- CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32
前段时间学习了CanOpen协议,到网上下载的CanFestival3-10源码,移植到VC.QT.STM32等平台,由于网上的资源较少,走了不少弯路,移植好使用过程中才逐渐暴露出各种问题,比如OD字 ...