Linux - Shell - 参数获取

  1. 概述

    1. 参数
    2. 准备重构一版...
  2. 背景

    1. 复习一下 shell 脚本的参数获取
  3. 场景

    1. os
      1. centos7

1. 参数: 基础

  1. 概述
    1. 简单描述 参数

1. 获取参数

  1. 获取 第一个 参数

    1. 获取参数

      1. 使用 ${num} 获取参数
      2. ${1} 获取 第一个参数
    2. 代码

      #!/bin/bash
      var1=${1}
      echo ${var1}
      
    3. 其他

      1. 可以尝试 ${2}, ${3} 等获取后续参数
      2. 默认情况下, 如果参数不足, echo 不会报错, 其他命令, 需要验证

2. 获取多个参数

  1. 问题1: 获取多个参数

    1. 一个一个获取参数, 如果参数多了, 会不会很麻烦
  2. 解决

    1. 可以一次获得 所有参数
  3. 方案1: $*

    1. $*

      1. 一次获取所有参数
    2. 代码

      #!/bin/bash
      var1=$*
      echo ${var1}
      
  4. 问题2: 分开取参数

    1. 所有参数

      1. $* 获取到的参数, 是所有参数排在一起的
    2. 需要

      1. 我想单独获得 某个参数
    3. 解决

      1. 思路1: 你知道要找 第几个 参数
        1. 使用 $
      2. 思路2: 什么? 你不知道是第几个, 但是你就知道要 什么样的参数
        1. 转化为 数组
          1. 暂时不推荐
            1. 转化数组, 我还不会
            2. 转化后的数组, 不知道 元素下标的话, 需要循环, 数组的操作, 我还是不会
      3. 思路3: 使用 $@
  5. 方案2: $@

    1. 所有参数

      1. 多在 循环时 使用
    2. 代码

      #!/bin/bash
      for word in "$@"
      do
          echo ${word}
      done
      

3. 获取最后一个参数

  1. 问题: 最后一个参数

    1. 最后一个
      1. 我就想获得 最后一个参数
  2. 解决

    #!/bin/bash
    
    # 假设参数是 1 2 3
    # 最后一个参数, ${3}
    var1=${#}
    echo $var1
    echo ${!var1}
    
    # 倒数 第二个参数, ${2}
    var2=$[${#}-1]
    echo $var2
    echo ${!var2}
    
  3. 问题: 手滑没加参数

    1. 问题

      1. 忽然手滑, 没有加参数
    2. 结果

      1. 第一段直接打印出了 脚本名

4. 获取脚本名

  1. 脚本名

    1. $
      1. 打印 ${0} 即可看到
  2. 问题

    1. ./<script>

      1. 显示 ./<script>
    2. bash <script>

      1. 显示 <script>
    3. source <script>

      1. 显示 -bash
        1. ????

ps

  1. ref

    1. 学习 bash
    2. Shell 传递参数
    3. Linux获取最后一个参数(参数统计)
  2. 疑问

    1. 获取脚本名称如果这么不稳定, 那是否有 稳定的方法 呢?
  3. 后续尝试下 获取 选项

posted @ 2019-12-23 20:10  轩辕拾銉  阅读(1918)  评论(0编辑  收藏  举报