LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1586|回复: 7

新手问个命令(关于冒号)

[复制链接]
发表于 2010-2-11 18:39:48 | 显示全部楼层 |阅读模式
请问这个命令是何意:

  {var:=value}

谢谢!!!
发表于 2010-2-12 12:24:25 | 显示全部楼层
这个的意思是让 bash 执行一个错误命令

--- 我的意思是说: 你写错了吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-12 22:08:01 | 显示全部楼层
《Linux程序设计(第三版)》

看到42页,“:”命令

    冒号命令是一个控命令.它偶尔会被用来简化逻辑条件,相当于true的一个假名.因为它是内建的,所以它比true运行的要快,但它的可读性要差了不少.
    读者可能会在while循环的某个条件里面看到它,"while :" 表示这是一个无限循环,相当于更常见的"while true".
    ":"还被用在对变量进行条件化设置的情况下,比如说
    {var:=value}
    如果没有":",shell会尝试把$var解释为一个命令.

    在某些旧的shell脚本程序里,你会导刊冒号被用在一行的开始以引起一个注释,但现代的脚本程序总是用"#"来开始一个注释行,因为这样做的执行效率更高.

#!/bin/sh

rm -f fred
if [ -f fred ]; then
    :
else
    echo file fred did not exist
fi

exit 0


呵呵  就这句--“{var:=value}“不太懂啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-12 22:09:36 | 显示全部楼层
网上有这个解释:

{str:=expr}

如果变量str不为空,${str:=expr}就等于str的值,若str为空,就把expr的值赋值给str。
回复 支持 反对

使用道具 举报

发表于 2010-2-13 12:20:21 | 显示全部楼层
你在终端里尝试了吗?
  1. root [ ~ ]0# :${var:=value}
  2. -bash: :value: command not found
  3. root [ ~ ]127#
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-2-20 14:02:52 | 显示全部楼层
如果没有:,而var的值是null的话,就会把value赋值给var同时执行value(作为一个命令),而有了:的话,就不会执行它,而只是赋值
回复 支持 反对

使用道具 举报

发表于 2010-3-20 09:25:16 | 显示全部楼层
Post by ServerOnly;2069727
你在终端里尝试了吗?

  1. root [ ~ ]0# :${var:=value}
  2. -bash: :value: command not found
  3. root [ ~ ]127#
复制代码

不是这样用 di
回复 支持 反对

使用道具 举报

发表于 2010-3-22 16:21:11 | 显示全部楼层
man bash
搜Parameter Expansion会有一些介绍
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表