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 沒有參數, 否則就是有帶參數...

  • 相关阅读:
    Java EE (3) -- Java EE 6 Web Services Developer Certified Expert(1z0-897)
    二、用电信号传输 TCP/IP 数据(1)
    P2384 最短路 洛谷
    T1231 最优布线 codevs
    P3371 单源最短路径【模板】 洛谷
    spfa【模板】
    P1396 营救 洛谷
    解决Android加固多进程ptrace反调试的思路整理
    Android Dex文件格式解析
    360加固保so动态脱壳
  • 原文地址:https://www.cnblogs.com/haoxing990/p/4627445.html
Copyright © 2011-2022 走看看