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. 第一次项目冲刺(Alpha版本)2017/11/19

    一.当天站立式会议 会议内容 1.对数据库的设计的进一步讨论 2.讨论SSH一些配置细节 3.分配今天的任务 二.任务分解图 三.燃尽图 四.心得 1.零散的时间要利用起来,追上计划的进度. 2.在小 ...

  2. Eclipse解决运行、启动缓慢问题思路

    我的Eclipse近几天运行时速度奇慢,具体表现为: 1.只要ECLIPSE启动后,硬盘灯就狂闪,不停的读盘: 2.发布TOMCAT经常在0%: 3.偶尔CPU占满: 网上讲优化的文章无数,但是总是有 ...

  3. Weblogic 设置优先引用web项目的jar包

    在WEB-INF/weblogic.xml中进行如下配置: <container-descriptor> <prefer-web-inf-classes>true</pr ...

  4. 解析JS运动

    解析JS运动 物体运动原理:通过改变物体的位置,而发生移动变化. 任何运动都是相对的,就像物理中的运动公式:s(要达到的)=s0(当前的样式值)+vt. 方法:      1.运动的物体使用绝对定位 ...

  5. J - Relief grain HDU - 5029

    Relief grain Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others)T ...

  6. virtualbox+vagrant学习-3-Vagrant Share-1-简介

    Vagrant Share 通过 ngrok 内网穿透功能实现让全世界人可以访问虚拟机的服务 Vagrant Share允许你与世界上的任何人共享您的Vagrant环境,几乎支持你在任何网络环境中使用 ...

  7. git checkout -b

    创建分支: $ git branch mybranch切换分支: $ git checkout mybranch创建并切换分支: $ git checkout -b mybranch 更新master ...

  8. LeetCode429. N-ary Tree Level Order Traversal

    题目来源:429. N-ary Tree Level Order Traversal https://leetcode.com/problems/n-ary-tree-level-order-trav ...

  9. PAT乙级1007

    1007 素数对猜想 (20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数.“素数对猜想 ...

  10. nRF5282 资料链接帖子

    官方硬件设计参考