bash - 在 bash 中将波形符扩展与变量替换相结合

标签 bash escaping command-substitution tilde-expansion variable-substitution

假设我以 root 身份运行 bash,并且想要更改用户 ada 的主目录。还可以说 ada 存储在名为 $USER 的变量中(因为我是通过脚本执行此操作)。

当我尝试以下操作时,

chown -R $USER:$USER ~$USER

shell 首先执行波形符扩展,因此它尝试 chown /home/root/ada,而不是 /home/ada

有没有办法通过嵌套替换和正确的转义来做到这一点?

最佳答案

波浪号扩展很棘手,并且不适用于这样的变量。

一种方法是使用eval:

chown -R $USER:$USER $(eval echo ~"$USER")

但请确保您的 USER 变量不是来自不受信任的来源。

关于bash - 在 bash 中将波形符扩展与变量替换相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730465/

相关文章:

javascript - 用 JavaScript 替换 URL 中的所有特殊字符,如 'é'

java - 如何在 Scala 中反转义字符串?

javascript - 使用 JavaScript 转义单引号

bash - bash 命令替换中的脚本逻辑

linux - 将多行命令输出传递给 echo 仅输出单行

mysql - 健康检查导致 'Got an error reading communication packets' 消息

bash - 如何在没有交互的情况下安装 Certbot (Let's Encrypt)?

c++ - 帮助编辑代码以修复 "Argument list too long"错误

Bash:检查多管道命令链的退出状态

linux - 如何调试 bash 脚本并获取每个命令的执行时间