有什么区别?为什么这些工作:
echo $LOGNAME #prints username
echo "$(logname)" #prints username
但这不是:
echo "$(LOGNAME)" #prints command not found.
有什么区别?为什么这些工作:
echo $LOGNAME #prints username
echo "$(logname)" #prints username
但这不是:
echo "$(LOGNAME)" #prints command not found.
logname
是一个命令。
LOGNAME
是一个变量。
$(logname)
因为存在logname命令。
$(LOGNAME)
尝试运行不存在的命令LOGNAME
。
$LOGNAME
是一个变量。 logname
是一个命令。当你做
echo $LOGNAME
你是呼应变量,而当你做
echo "$(logname)"
您回荡在执行命令的结果。正好是输出结果相同的情况。
如果你做env | grep LOGNAME
,你会看到$LOGNAME
是一个环境变量,如果你做which logname
你会看到可执行文件的路径。但是,如果你做which LOGNAME
,你会看到没有输出。 echo $?
显示该命令的退出状态为1,这意味着不能找到可执行文件。
巧合的是,你可以用$PWD
和pwd
做同样的事情。
它恰好与'$ LOGNAME'和'$(logname)'输出相同。你可以用'env'看到'$ LOGNAME'这样的环境变量,而'logname'是一个你可以通过'man logname'获得信息的命令。 – fedorqui 2014-10-31 10:08:38
@fedorqui:你的意思是'$ LOGNAME'有时可以不同于'$(logname)'? – mrdaliri 2014-10-31 10:12:48
它可以不同,因为你可以为你设置'LOGNAME'。试试看:'LOGNAME = blblbl;回声“$ LOGNAME”'。 – 2014-10-31 10:16:39