相关疑难解决方法(0)

Bash中的动态变量名称

我对bash脚本感到困惑.

我有以下代码:

function grep_search() {
    magic_way_to_define_magic_variable_$1=`ls | tail -1`
    echo $magic_variable_$1
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个包含命令的第一个参数并带有例如最后一行的值的变量名ls.

所以说明我想要的东西:

$ ls | tail -1
stack-overflow.txt

$ grep_search() open_box
stack-overflow.txt
Run Code Online (Sandbox Code Playgroud)

那么,我应该如何定义/声明$magic_way_to_define_magic_variable_$1以及如何在脚本中调用它?

我已经试过eval,${...},\$${...},但我仍然感到困惑.

variables syntax bash dynamic

135
推荐指数
8
解决办法
16万
查看次数

什么是间接扩张?$ {!var*}是什么意思?

我正在读" Bash初学者指南 ".它说:

如果第一个字符PARAMETER是感叹号,则Bash使用由其余部分形成的变量的值作为变量PARAMETER的名称; 然后展开此变量,并将该值用于替换的其余部分,而不是其PARAMETER自身的值.这被称为间接扩张.

给出的例子是:

franky ~> echo ${!N*}
NNTPPORT NNTPSERVER NPX_PLUGIN_PATH
Run Code Online (Sandbox Code Playgroud)

我在这里不太明白:

从其余部分形成的变量的值 PARAMETER

由于PARAMETER是刚刚!N*的话

其余的 PARAMETER

只是N*.怎么会形成一个变量?Bash在那里搜索了所有可能的命令吗?

bash indirection

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

如何在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万
查看次数

在unix中使用变量作为变量名的一部分

我想将变量命名为a_${v}.

例如:v可以是2013 2014

我现在声明一个变量 a_${v}

a_${v}=hI # a_2013 should be Hi

v=2014
Run Code Online (Sandbox Code Playgroud)

所以a_${v}=Hello # a_2014应该是你好

我尝试使用eval命令,虽然它在分配值时没有抛出错误,但我无法提取变量名的值

$ v=2013

$ eval a_${v}=Hi


$ v=2014

$ eval a_${v}=Hello

echo ${a_${v}}
Run Code Online (Sandbox Code Playgroud)

不管用.. :(

我正在使用bash,我不想更改变量名,即不想将值赋给另一个值

unix shell

5
推荐指数
1
解决办法
5888
查看次数

标签 统计

bash ×4

variables ×2

dynamic ×1

indirection ×1

shell ×1

syntax ×1

unix ×1