UNIX Shell替代

2018-12-09 15:42 更新

Shell替代

什么是替代?

當(dāng)它遇到包含一個(gè)或多個(gè)特殊字符的表達(dá)式時(shí) Shell 執(zhí)行替代。

以下是一個(gè)例子,在這個(gè)例子中,變量被其真實(shí)值所替代。同時(shí),“\n” 被替換為換行符:

    #!/bin/sh

    a=10
    echo -e "Value of a is $a \n"

這會(huì)產(chǎn)生以下結(jié)果。在這里 -e 選項(xiàng)可以解釋反斜杠轉(zhuǎn)義。

    Value of a is 10

下面是沒(méi)有 -e 選項(xiàng)的結(jié)果:

    Value of a is 10\n

這里有以下轉(zhuǎn)義序列可用于 echo 命令:

EscapeDescription
\\反斜杠
\a警報(bào)(BEL)
\b退格鍵
\c抑制換行
\f換頁(yè)
\n換行
\r回車
\t水平制表符
\v垂直制表符

默認(rèn)情況下,你可以使用 -E 選項(xiàng)來(lái)禁用反斜線轉(zhuǎn)義解釋。

你你可以使用 -n 選項(xiàng)來(lái)禁用換行的插入。

命令替換:一種機(jī)制,通過(guò)它, Shell 執(zhí)行給定的命令,然后在命令行替代他們的輸出。

語(yǔ)法

當(dāng)給出如下命令時(shí)命令替換就會(huì)被執(zhí)行:

    command

當(dāng)執(zhí)行命令替換確保你使用反引號(hào),而不是單引號(hào)字符。

命令替換一般是用來(lái)分配一個(gè)命令的輸出變量。下面的示例演示命令替換:

    #!/bin/sh

    DATE=`date`
    echo "Date is $DATE"

    USERS=`who | wc -l`
    echo "Logged in user are $USERS"

    UP=`date ; uptime`
    echo "Uptime is $UP"

這會(huì)產(chǎn)生以下結(jié)果:

    Date is Thu Jul  2 03:59:57 MST 2009
    Logged in user are 1
    Uptime is Thu Jul  2 03:59:57 MST 2009
    03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

變量代換

變量代換使 Shell 程序員操縱基于狀態(tài)變量的值。

下面的表中是所有可能的替換:

FormDescription
${var}替代 var 的值
${var:-word}如果 var 為空或者沒(méi)有賦值,word 替代 var。var 的值不改變。
${var:=word}如果 var 為空或者沒(méi)有賦值, var 賦值為 word 的值。
${var:?message}如果 var 為空或者沒(méi)有賦值,message 被編譯為標(biāo)準(zhǔn)錯(cuò)誤。這可以檢測(cè)變量是否被正確賦值。
${var:+word}如果 var 被賦值,word 將替代 var。var 的值不改變。

以下是例子用來(lái)說(shuō)明上述替代的各種狀態(tài):

    #!/bin/sh

    echo ${var:-"Variable is not set"}
    echo "1 - Value of var is ${var}"

    echo ${var:="Variable is not set"}
    echo "2 - Value of var is ${var}"

    unset var
    echo ${var:+"This is default value"}
    echo "3 - Value of var is $var"

    var="Prefix"
    echo ${var:+"This is default value"}
    echo "4 - Value of var is $var"

    echo ${var:?"Print this message"}
    echo "5 - Value of var is ${var}"

這會(huì)產(chǎn)生以下結(jié)果:

    Variable is not set
    1 - Value of var is
    Variable is not set
    2 - Value of var is Variable is not set

    3 - Value of var is
    This is default value
    4 - Value of var is Prefix
    Prefix
    5 - Value of var is Prefix
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)