相关疑难解决方法(0)

为什么要在Bash中避免使用eval,我应该使用什么呢?

我一次又一次地看到Bash在Stack Overflow上使用eval的答案,并且答案得到了抨击,双关语是为了使用这种"邪恶"结构.为什么eval这么邪恶?

如果eval不能安全使用,我应该使用什么呢?

unix linux bash eval

94
推荐指数
3
解决办法
6万
查看次数

如何在bash中将变量的值用作另一个变量的名称

我想声明一个变量,其名称来自另一个变量的值,我编写了以下代码:

a="bbb"
$a="ccc"
Run Code Online (Sandbox Code Playgroud)

但它不起作用.完成这项工作的正确方法是什么?

bash

42
推荐指数
6
解决办法
7万
查看次数

Bash - 变量变量

我有变量$foo="something",想使用:

bar="foo"; echo $($bar)
Run Code Online (Sandbox Code Playgroud)

让某些东西得到回应.

variables bash

39
推荐指数
3
解决办法
3万
查看次数

是否可以在bash中从其他变量构建变量名?

我为这个非常可怕的标题道歉 - 以及质量差的帖子 - 但我基本上想要做的是:

for I in 1 2 3 4
    echo $VAR$I # echo the contents of $VAR1, $VAR2, $VAR3, etc.
Run Code Online (Sandbox Code Playgroud)

显然上面的方法不起作用 - 它会(我认为)尝试$VAR$I在Bash中回显一个名为Is this 的变量吗?

variables bash

29
推荐指数
3
解决办法
3万
查看次数

按名称查找shell变量,间接

假设我将变量的名称存储在另一个变量中:

myvar=123
varname=myvar
Run Code Online (Sandbox Code Playgroud)

现在,我想通过使用$ varname变量得到123.有直接的方法吗?我发现没有这样的bash内置用于按名称查找,所以想出了这个:

function var { v="\$$1"; eval "echo "$v; }
Run Code Online (Sandbox Code Playgroud)

所以

var $varname  # gives 123
Run Code Online (Sandbox Code Playgroud)

这最终看起来并不太糟糕,但我想知道我是否错过了一些更明显的东西.提前致谢!

bash eval

13
推荐指数
2
解决办法
4146
查看次数

标签 统计

bash ×5

eval ×2

variables ×2

linux ×1

unix ×1