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”,也就是函数名了。

随机推荐

  1. Substring Search

    查找子字符串 Introduction 在长度为 N 的文本里寻找长度为 M 的模式(子串),典型情况是 N >> M. 这个应用就很广泛啦,在文本中寻找特定的模式(子串)是很常见的需求. ...

  2. yii 执行流程

    应用执行流程: 浏览器向服务器发送 Http Request | 控制器(protected/controllers) | |---> Action | 创建模型 (Model) | 检查$_P ...

  3. 微信小程序 动态加载class

    <view class=' {{topid==1?"top": "untop"}}' >

  4. 搭建高可用mysql系列(2)-- Percona XtraDB Cluster 安装

    本文主要介绍在 centos 下 Percona XtraDB Cluster(下文简称PXC) 的安装, 个人的系统版本信息如下: [root@c2-d09 worker]# more /etc/r ...

  5. 打开一个网站中的不同页面时,相同的js文件会被重复加载吗?

    作者:JasonYang链接:https://www.zhihu.com/question/41184156/answer/135195798来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  6. 域对象 request

    一)域对象: 1)request的生命周期: 从请求开始创建,到响应完成结束. 2)  作用:携带一次请求内的数据. 3)请求转发: 请求转发: 1)浏览器发送请求到服务器A,然后服务器A将请求转发到 ...

  7. 使用JS获取上一页的url地址

    一般来说每个页面上面都有一个返回按钮,用来返回上一页,代码如下: <a href="javascript:history.go(-1)" class="jsBack ...

  8. java spring boot项目部署-上

    1.编写sh脚本,便于服务器上管理工程: #!/bin/bash source /etc/profile PROG_NAME=$ ACTION=$ usage() { echo "Usage ...

  9. 你都用python来做什么?

    首页发现话题   提问     你都用 Python 来做什么? 关注问题写回答     编程语言 Python 编程 Python 入门 Python 开发 你都用 Python 来做什么? 发现很 ...

  10. 【VSC】git+github/码云+VSCode

    VSCode中使用git,参见. (零)Git安装 在初次使用时如果本地没有安装git会提示先安装git,然后重启vscode. (一)本地操作项目前提: 1)若本地没有git拉取下来的项目,用git ...