首页 > 解决方案 > 将链接命令回显到剪贴板

问题描述

我有一个脚本,它解析来自 AWS IAM 的响应,创建一个包含环境变量的文件,并将以下命令存储在用户的剪贴板中,用于将环境变量源到他们的 shell 中:

脚本中的相关行:

echo -e "source $env_file_name" | pbcopy

导致这是剪贴板内容:

source NAME_OF_FILE

这有效 - 当用户运行时`pbpaste`,设置环境变量,并且用户可以访问资源。但是,如果我想通过在剪贴板中存储链接命令来执行该文件的清理,则永远不会到达第二个命令:

echo -e "source $env_file_name;rm $env_file_name" | pbcopy

我尝试过各种变化,例如:

echo -e "source $env_file_name && rm $env_file_name" | pbcopy

粘贴时:

~ > `pbpaste`                                                                                                                                                                                          
zsh: command not found: ;rm

它显然将&&and解释`为字符串文字,我不确定如何解决这个问题。

标签: bashmacos

解决方案


扩展命令替换后通常进行的唯一处理是分词和文件名扩展。如果您希望处理其他 shell 语法(例如;分隔命令),则必须使用eval.

eval "$(pbpaste)"

推荐阅读