所谓的位置参数(positional parameters)指的也就是Shell脚本的命令行参数(command-line arguments)。在Shell函数里,它们同时也可以是函数的参数。各参数都由整数来命名。基于历史的原因,当其超过9,就应该用大括号把数字框起来:
        echo first arg is $1
        echo tenth arg is ${10} 
 
   假设你想知道某个用户正使用的终端是什么,你当然可以直接使用who命令,然后再输出中慢慢找。这么做很麻烦又容易出错--特别是当系统的用户很多的时候。你想做的只不过是在 who 的输出中找到那位用户,这个时候你可以用 grep 命令来进行查找操作,它会列出第一个参数(所指定的模式)匹配的每一行。我的虚拟机上的用户较少,以many为例。
 
         [many@avention Desktop]$ who | grep many
         many     :0           2018-09-25 00:26 (:0)
         many     pts/0        2018-09-25 00:26 (:0)
 
 知道如何寻找特定的用户后,我么可以将命令放进脚本里,这段脚本的第一个参数就是要找的用户名称:
       [many@avention my_sh]$ cat > finduser.sh                                    #建立新的脚本文件
        #! /bin/sh
 
        who | grep $1                                                                                  #查看第一个参数所指定你的用户是否登录
 
        [many@avention my_sh]$ chmod u+x finduser.sh                        #为脚本的拥有者设置可执行权限
        [many@avention my_sh]$
        [many@avention my_sh]$ ./finduser.sh many                               #测试,寻找 many用户
        many     :0           2018-09-25 00:26 (:0)
        many     pts/0        2018-09-25 00:26 (:0)
        [many@avention my_sh]$
 
 
    在shell脚本中,注释(comment)是以 # 开头的。为了增加脚本的可读性,多写注释。
 
    关于命令行参数的更多细节,在后续章节中补充。

2.6 访问 Shell 脚本的参数的更多相关文章

  1. shell脚本常用参数

    shell 脚本 常用参数 #!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell sh -x # 执行过程 sh -n # 检查语法 (a=bbk ...

  2. linux shell脚本通过参数名传递参数值

    平常在写shell脚本都是用$1,$2....这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚 ...

  3. postgresql shell脚本传递参数并执行sql脚本并

    参考: https://stackoverflow.com/questions/7389416/postgresql-how-to-pass-parameters-from-command-line ...

  4. shell脚本中$参数的介绍

    $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表.如&quo ...

  5. shell脚本--shift参数左移

    参数左移什么意思呢?这个参数指的是在运行脚本时,跟在脚本名后面的参数,前面已经讲过,可以使用$#来获取参数的个数,使用$*来获取所有的参数,而参数左移的含义是这样的:有个指针指向参数列表第一个参数,左 ...

  6. shell脚本带参数启动项目

    用maven工程打包时,会将数据库连接一并打进去,如果需要经常修改数据库连接,则需要打开jar包然后修改配置,这样很麻烦耗时并且容易出错. 因此需要将数据库配置放入项目外,这样修改数据库时去固定的配置 ...

  7. shell 脚本接收参数

    test.sh #!/bin/bash echo "脚本名$0" echo "第1个参数$1" echo "第2个参数$2" echo &q ...

  8. linux shell 脚本输入参数解析

    文件名: test.sh #!/bin/bash para="para: "; while [ $# -ge 2 ] ; do case "$1" in --a ...

  9. shell脚本编程入门

    Linux的Shell种类众多,这里我们关注的重点是Bash. 基本语法 环境变量$PATH IO重定向:  以<改变标准输入 如:tr -d '\r' < dos-file.txt 以& ...

随机推荐

  1. 什么是javascript闭包?

    在我们开发中,也经常使用到闭包,但当有人问什么是闭包,就会可能说不上来.那就谈谈一些基本的: 一.理解闭包的概念, 简单说当function里嵌套function时,内部的function可以访问外部 ...

  2. 洛谷 P2090 数字对

    发现如果给定两个数(a,b),可以用类似辗转相除法在logn的时间内计算出(反向)变到(1,1)的最小步数. 然而并不知道另一个数是多少? 暴力嘛,枚举一下另一个数,反正1000000的nlogn不虚 ...

  3. ACM_走楼梯Ⅱ

    走楼梯Ⅱ Time Limit: 2000/1000ms (Java/Others) Problem Description: 有一楼梯共N+1级,刚开始时你在第一级,若每次能走M级(1<=M& ...

  4. Apache Calcite项目简介

    文章导读: 什么是Calcite? Calcite的主要功能? 如何快速使用Calcite? 什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功 ...

  5. 数据采集框架Gobblin简介

    问题导读: Gobblin的架构设计是怎样的? Gobblin拥有哪些组建,如何实现可扩展? Gobblin采集执行流程的过程? 前面我们介绍Gobblin是用来整合各种数据源的通用型ETL框架,在某 ...

  6. Myeclipse2014安装&破解激活

    市场上很多JavaWeb的IDE比如Idea(听说用好开发效率会很高),eclipse(插件丰富还免费),但是对于初学者还是为了提高学习的效率(Myeclipse创建web项目的时候可以自动生成一些配 ...

  7. linux gcc编译protocol

    gcc -c test.pb-c.c//生成test.pb-c.o文件 gcc -c udp_socket_server.c//生成udp_socket_server.o gcc -o test1 u ...

  8. RabbitMQ - Publisher的消息确认机制

    queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consumer处理呢?毕竟对于 ...

  9. NVIDIA各个领域芯片现阶段的性能和适应范围

    NVIDIA作为老牌显卡厂商,在AI领域深耕多年.功夫不负有心人,一朝AI火,NVIDIA大爆发,NVIDIA每年送给科研院所和高校的大量显卡,大力推广Physix和CUDA,终于钓了产业的大鱼. 由 ...

  10. canvas一周一练 -- canvas绘制中国银行标志(4)

    运行效果: <!DOCTYPE html> <html> <head> </head> <body> <canvas id=" ...