Movatterモバイル変換


[0]ホーム

URL:


codecamp

UNIX Shell替代

Shell替代

什么是替代?

当它遇到包含一个或多个特殊字符的表达式时 Shell 执行替代。

以下是一个例子,在这个例子中,变量被其真实值所替代。同时,“\n” 被替换为换行符:

    #!/bin/sh    a=10    echo -e "Value of a is $a \n"

这会产生以下结果。在这里-e 选项可以解释反斜杠转义。

    Value of a is 10

下面是没有 -e 选项的结果:

    Value of a is 10\n

这里有以下转义序列可用于 echo 命令:

EscapeDescription
\\反斜杠
\a警报(BEL)
\b退格键
\c抑制换行
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符

默认情况下,你可以使用 -E 选项来禁用反斜线转义解释。

你你可以使用 -n 选项来禁用换行的插入。

命令替换:一种机制,通过它, Shell 执行给定的命令,然后在命令行替代他们的输出。

语法

当给出如下命令时命令替换就会被执行:

    command

当执行命令替换确保你使用反引号,而不是单引号字符。

命令替换一般是用来分配一个命令的输出变量。下面的示例演示命令替换:

    #!/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"

这会产生以下结果:

    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 程序员操纵基于状态变量的值。

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

FormDescription
${var}替代var 的值
${var:-word}如果var 为空或者没有赋值,word 替代varvar 的值不改变。
${var:=word}如果var 为空或者没有赋值,var 赋值为word 的值。
${var:?message}如果var 为空或者没有赋值,message 被编译为标准错误。这可以检测变量是否被正确赋值。
${var:+word}如果var 被赋值,word 将替代 var。var 的值不改变。

以下是例子用来说明上述替代的各种状态:

    #!/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}"

这会产生以下结果:

    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
UNIX Shell循环控制
UNIX Shell引用机制
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

UNIX 基础

UNIX Shell编程

UNIX 进阶

UNIX 常用资源汇总

关闭

MIP.setData({'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false},'pageFontSize' : getCookie('pageFontSize') || 20});MIP.watch('pageTheme', function(newValue){setCookie('pageTheme', JSON.stringify(newValue))});MIP.watch('pageFontSize', function(newValue){setCookie('pageFontSize', newValue)});function setCookie(name, value){var days = 1;var exp = new Date();exp.setTime(exp.getTime() + days*24*60*60*1000);document.cookie = name + '=' + value + ';expires=' + exp.toUTCString();}function getCookie(name){var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null;}
[8]ページ先頭

©2009-2025 Movatter.jp