为什么 $(RANDOM) 的工作方式与 $(ls -la) 不同?

为什么 $(RANDOM) 的工作方式与 $(ls -la) 不同?

对于 bash 中的命令替换,我们这样做

hello=$(ls -la)  
echo "$hello"

但是当我对下面的命令执行相同操作时,它失败了,它说找不到随机数

hell=$(RANDOM)
echo "$hell"

我可以通过使用算术扩展来克服它。

hell=$((RANDOM))
echo "$hell"

知道为什么下面不起作用...根据我的理解,随机也是一个命令,我应该得到数字回显

hell=$(RANDOM)
echo "$hell"

答案1

RANDOM不是命令,而是变量。只是一套是由外壳组成的,还有一点特别

RANDOM 每次引用此参数(*)时,它都会扩展为 0 到 32767 之间的随机整数。为此变量分配一个值会为随机数生成器提供种子。如果未设置 RANDOM,它将失去其特殊属性,即使随后重置它也是如此。

就像echo "$RANDOM"你如何使用任何变量一样,比如更“正常”的,HOMEBASH_VERSION。当然${RANDOM},使用大括号而不是常规括号也可以。

能够在没有 的情况下在算术展开中使用它$也是算术语境,并且适用于任何变量:

在表达式中,shell 变量也可以通过名称引用,而不使用参数扩展语法。

(例如x=4; echo "$((x*x))"印刷品16

(* 此处您可以忽略变量与参数的区别。)

相关内容