$ declare tmp //声明tmp变量
$ tmp=ls//我把ls赋值给tmp
$ $tmp//直接使用tmp。然而得到的结果和ls似乎有点不太一样
就是颜色问题。
为什么$ $tmp显示出来的结果文件夹不会变色
CentOS7变量直接使用的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-05 16:44关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Linux中,
$符号用于指向一个命令的输出。当你在脚本或shell交互中使用$符号时,它实际上是调用了eval命令,并将命令的输出作为参数传递给它。这可能导致你看到与实际执行命令不同的输出。例如,在你的例子中:
$ declare tmp在这个情况下,
tmp变量被声明为可读写的(w)。然后我们试图通过$指针来访问这个变量,但实际上它指向的是当前 shell 的环境变量。因此,当你尝试通过$指针引用tmp时,实际上是在尝试访问 shell 环境中的临时变量。要解决这个问题,你可以手动创建一个临时变量并将其赋值给你想要的操作,而不是通过
$指针。这样可以避免任何潜在的环境变量污染问题。以下是修复后的示例:# 创建一个临时变量 local tmp_var=$(ls) # 使用临时变量 echo $tmp_var # 输出应该反映原始 ls 命令的结果这样做的好处是,即使
ls被更改为其他命令,也不会影响到tmp_var的内容,因为它是临时变量,每次运行脚本都会重新生成一个新的tmp_var。解决 无用评论 打赏 举报