zoukankan      html  css  js  c++  java
  • shell 参数

    位置参数

    所谓位置参数 (positional parameter) ,指的是 Shell 脚本的命令行参数 (argument) ;同时也表示在 Shell 函数内的函数参数。它们的名称是以单个的整数来命名。出于历史的原因,当这个整数大于 9 时,就应该以花括号( {} )括起来 :

    echo first arg is $1
    echo tenth arg is ${10}

    特殊变量参数

    $#

    提供传递到 Shell 脚本或者函数的参数总数。

    $*,$@

    一次表示所有的命令行参数.这两个参数可用来把命令行参数传递给脚本或函数所执行的程序.

    “$*”

    将所有命令行参数视为单个字符串,等同于“$1 $2...”。$lFS 的第一个字符用来作为分隔字符,以分隔不同的值来建立字符串

    “$@”

    将所有的命令行参数视为单独的个体,也就是单独字符串,等同于"$1" "$2" ..这是将参数传递给其他程序的最佳方式,因为它会保留所有内嵌在每个参数里的任何空白

    # 设置参数
    qiweijie@qiweijie:~$ set -- hello "hi there " greetings
    qiweijie@qiweijie:~$ echo $#
    3
    # 没有加引号的 $*和$@是一样的效果
    qiweijie@qiweijie:~$ for i in $*
    > do echo i is $i
    > done
    i is hello
    i is hi
    i is there
    i is greetings
    qiweijie@qiweijie:~$ for i in $@; do echo i is $i; done
    i is hello
    i is hi
    i is there
    i is greetings
    # 加了引号的,两个就不一样了
    qiweijie@qiweijie:~$ for i in "$*"; do echo i is $i; done
    i is hello hi there greetings
    qiweijie@qiweijie:~$ for i in "$@"; do echo i is $i; done
    i is hello
    i is hi there
    i is greetings
    qiweijie@qiweijie:~$ 
    qiweijie@qiweijie:~$ shift
    qiweijie@qiweijie:~$ echo $#
    2
    qiweijie@qiweijie:~$ shift 
    qiweijie@qiweijie:~$ echo $#
    1

    p

  • 相关阅读:
    leetcode 105. 从前序与中序遍历序列构造二叉树
    leetcode 96. 不同的二叉搜索树
    leetcode 21. 合并两个有序链表
    leetcode 617. 合并二叉树
    leetcode 101. 对称二叉树
    欧拉定理和扩展欧拉定理。
    [NOI2018] 屠龙勇士
    [SDOI2010]古代猪文
    [SDOI2013]方程
    扩展Lucas定理
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/5007408.html
Copyright © 2011-2022 走看看