bash:扩展变量

发布于 2024-10-20 03:07:45 字数 205 浏览 7 评论 0原文

我正在尝试向我的 .bashrc 添加一个函数,以方便将 $PWD 添加到环境变量中。我希望该函数接受一个参数——在其上添加工作目录的变量的名称。我在想这样的事情......

function prependTo{ export $1=$PWD:\$$1 }

我想要在 bash 中做的事情是可能的吗?

I'm trying to add a function to my .bashrc to ease prepending $PWD to environment variables. I'd like the function to take one argument -- the name of the variable on which to prepend the working directory. I'm thinking something like this...

function prependTo{ export $1=$PWD:\$1 }

Is what I'm looking to do possible in bash?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情旳空白 2024-10-27 03:07:45

不要使用 function 关键字,它已被弃用并且不符合 POSIX 标准。相反,请执行以下操作:

 prependTo(){ export $1=$PWD:${!1}; }

解释

来自 man bash

如果参数的第一个字符是
一个感叹号,一个级别
引入了变量间接。
bash 使用
由其余参数形成的变量值如下
变量的名称;这
然后变量被扩展
并且该值用于其余的替换,而不是
参数本身的值。这
被称为
间接扩展。

Don't use the function keyword, it is deprecated and non-POSIX. Instead do this:

 prependTo(){ export $1=$PWD:${!1}; }

Explanation

From man bash

If the first character of parameter is
an exclamation point, a level of
variable indirection is introduced.
Bash uses
the value of the variable formed from the rest of parameter as
the name of the variable; this
variable is then expanded
and that value is used in the rest of the substitution, rather than
the value of parameter itself. This
is known as
indirect expansion.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文