首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赋值"$*“

赋值"$*“
EN

Stack Overflow用户
提问于 2020-07-20 13:06:31
回答 2查看 57关注 0票数 0

我遇到过这样的任务,我以前从未见过,": ${var=$*}“。这个任务也可以像var=$*一样完成,但是有谁能解释一下上面正在做的事情吗?我试着去找它,但是一无所获。

EN

回答 2

Stack Overflow用户

发布于 2020-07-20 14:05:20

说明:

例如:

代码语言:javascript
复制
    A="value1"
    B=${A="value2"}
    echo $B  ->  value1

现在,当变量A未定义时,它将检索值'value2‘

代码语言:javascript
复制
    unset A
    B=${A="value2"}    
    echo $B  ->  value2
票数 1
EN

Stack Overflow用户

发布于 2020-07-20 15:53:41

让我们一步一步地看这一行:

  • : argument:这只执行参数的扩展。冒号命令通常没有什么用处,但可用于参数验证或通过参数扩展进行初始化。它还用于运行无限的while循环。

代码语言:javascript
复制
- [What is the purpose of the : (colon) GNU Bash builtin?](https://stackoverflow.com/questions/3224878/what-is-the-purpose-of-the-colon-gnu-bash-builtin)
- [[U&L] What purpose does the colon builtin serve](https://unix.stackexchange.com/questions/31673/)
- [BashFAQ035](https://mywiki.wooledge.org/BashFAQ/035)

  • ${var=word}上述展开中的argument的形式为${var=word}。这与${var:=word}相同,唯一的区别是前者测试var是否未设置,而后者测试var是否未设置或为null。如果符合条件,则将word

的值赋给var

  • $*上面word的值现在是$*的扩展。它将扩展为形式为$1c$2c$3c...$的单个字符串,其中$n是命令参数的值,而c的值将扩展到变量c的第一个字符

综上所述,此命令相当于使用经典编程术语的以下行:

代码语言:javascript
复制
if [ -z ${var+x} ]; then var="$*"; fi

请参阅How to check if a variable is set in Bash?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62988954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档