课程表

UNIX 基础

UNIX Shell编程

UNIX 进阶

UNIX 常用资源

工具箱
速查手册

UNIX Shell替代

当前位置:免费教程 » 数据库/运维 » UNIX

什么是替代?

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

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

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

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

  1. Value of a is 10

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

  1. Value of a is 10\n

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

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

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

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

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

语法

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

  1. command

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

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

  1. #!/bin/sh
  2. DATE=`date`
  3. echo "Date is $DATE"
  4. USERS=`who | wc -l`
  5. echo "Logged in user are $USERS"
  6. UP=`date ; uptime`
  7. echo "Uptime is $UP"

这会产生以下结果:

  1. Date is Thu Jul 2 03:59:57 MST 2009
  2. Logged in user are 1
  3. Uptime is Thu Jul 2 03:59:57 MST 2009
  4. 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 的值不改变。

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

  1. #!/bin/sh
  2. echo ${var:-"Variable is not set"}
  3. echo "1 - Value of var is ${var}"
  4. echo ${var:="Variable is not set"}
  5. echo "2 - Value of var is ${var}"
  6. unset var
  7. echo ${var:+"This is default value"}
  8. echo "3 - Value of var is $var"
  9. var="Prefix"
  10. echo ${var:+"This is default value"}
  11. echo "4 - Value of var is $var"
  12. echo ${var:?"Print this message"}
  13. echo "5 - Value of var is ${var}"

这会产生以下结果:

  1. Variable is not set
  2. 1 - Value of var is
  3. Variable is not set
  4. 2 - Value of var is Variable is not set
  5. 3 - Value of var is
  6. This is default value
  7. 4 - Value of var is Prefix
  8. Prefix
  9. 5 - Value of var is Prefix
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号