zoukankan      html  css  js  c++  java
  • 在 shell中, 我們可用 $0, $1, $2, $3 ... 這樣的变量分別提取命令行中变量

    代码: script_name parameter1 parameter2 parameter3 ...
    我們很容易就能猜出 $0 就是代表 shell script 名称(路径)本身,而 $1 就是其后的第一个参数, 依次类推....

    須得留意的是 IFS 的作用,也就是, 若 IFS 被 quoting 處理後, 那麼 positional parameter 也會改變。
    如下例:
    代码: my.sh p1 "p2 p3" p4
    fucntion 時, 我不是說過它是 script 中的 script

    一例外的是 $0 而已。
    舉例 而 言 : 假設 my.sh 裡有一個 fucntion 叫 my_fun , 若 在 script 中 跑 my_fun fp1 fp2 fp3 ,
    那麼, function 內的 $0 是 my.sh , 而 $1 則是 fp1 而非 p1 了 ...
    不如寫個簡單的 my.sh script 看看吧:
    代码: #!/bin/bash

    my_fun() {

    echo '$0 inside function is '$0

    echo '$1 inside function is '$1

    echo '$2 inside function is '$2

    }

    echo '$0 outside function is '$0

    echo '$1 outside function is '$1
    echo '$2 outside function is '$2

    my_fun fp1 "fp2 fp3"

    然後在 command line 中跑一下 script 就知道了:
    代码: chmod +x my.sh ./my.sh p1 "p2 p3"

    $0 outside function is ./my.sh

    $1 outside function is p1

    $2 outside function is p2 p3

    $0 inside function is ./my.sh

    $1 inside function is fp1

    $2 inside function is fp2 fp3


    我們常在 shell script 裡用如下方法測試 script 是否有读进参数:
    代码:
    if [ $# = 0 ] //看到没有,所有的[]中的内容都必须和括号有空格
    假如為 0 , 那就表示 script 沒有參數, 否則就是有帶參數...

  • 相关阅读:
    poj 2406 Power Strings【最小循环节】
    hdoj 2087 剪花布条
    hdoj 1054 Strategic Game【匈牙利算法+最小顶点覆盖】
    hdoj 1151 Air Raid
    hdoj 2502 月之数
    hdoj 1862 EXCEL排序
    hdoj 1200 To and Fro
    hdoj 1150 Machine Schedule【匈牙利算法+最小顶点覆盖】
    hdoj 1068 Girls and Boys【匈牙利算法+最大独立集】
    uva1563
  • 原文地址:https://www.cnblogs.com/haoxing990/p/4627445.html
Copyright © 2011-2022 走看看