“$(变量)”和“$(VARIABLE)”之间有什么区别?

时间:2014-10-31 09:58:10

标签: bash

有什么区别?为什么这些有效:

echo $LOGNAME       #prints username
echo "$(logname)"   #prints username

但这不是:

echo "$(LOGNAME)"   #prints command not found.

2 个答案:

答案 0 :(得分:4)

logname是一个命令 LOGNAME是一个变量。

$(logname)有效,因为存在logname命令 $(LOGNAME)尝试运行不存在的命令LOGNAME

阅读following useful guide

答案 1 :(得分:4)

$LOGNAME是一个变量。 logname是一个命令。当你这样做

echo $LOGNAME

你正在回应变量,而当你做

echo "$(logname)"

您正在回应执行命令的结果。恰好是输出相同的情况。

如果您执行env | grep LOGNAME,您会看到$LOGNAME是一个环境变量,如果您执行which logname,您将看到可执行文件的路径。但是,如果执行which LOGNAME,您将看到没有输出。 echo $?表示该命令的退出状态为1,这意味着找不到可执行文件。

巧合的是,您可以使用$PWDpwd执行相同的操作。