小编Eri*_*ith的帖子

为什么 Unix 负责人说“减号”?

几周前,我参加了一个似乎来自 Windows 背景的人关于 Git 的演讲。我说“似乎是”是因为他在提到命令行选项时一直说“破折号”。然后我回忆起我在早期学习 Linux 时觉得很好奇的事情;也就是说,在提到选项时,常驻 Unix 负责人总是说“减号”。那是:

rm -rf /var/tmp/bogus/junk
Run Code Online (Sandbox Code Playgroud)

会说“arr em 减去arr ef”,而不是“arr em dash arr ef”。

为什么是这样?

conventions

58
推荐指数
10
解决办法
2万
查看次数

Vim 中的行号

如何在 Vim 中显示行号?

vim

11
推荐指数
2
解决办法
738
查看次数

间接返回数组中的所有元素

Bash 手册页描述了使用${!a}返回名称为a(间接级别)内容的变量的内容。

我想知道如何使用这个返回数组中的所有元素,即,

a=(one two three)
echo ${a[*]}
Run Code Online (Sandbox Code Playgroud)

返回

one two three
Run Code Online (Sandbox Code Playgroud)

我想要:

b=a
echo ${!b[*]}
Run Code Online (Sandbox Code Playgroud)

返回相同。不幸的是,它没有,而是返回0

更新

鉴于回复,我现在意识到我的例子太简单了,因为当然,像:

b=("${a[@]}")
Run Code Online (Sandbox Code Playgroud)

将完全实现我所说的我需要的。

所以,这就是我想要做的:

LIST_lys=(lys1 lys2)
LIST_diaspar=(diaspar1 diaspar2)

whichone=$1   # 'lys' or 'diaspar'

_LIST=LIST_$whichone
LIST=${!_LIST[*]}
Run Code Online (Sandbox Code Playgroud)

当然,仔细阅读 Bash 手册页表明这不会按预期工作,因为最后一行只是返回“数组”的索引$_LIST(根本不是数组)。

在任何情况下,以下应该做的工作(如所指出的):

LIST=($(eval echo \${$_LIST[*]}))
Run Code Online (Sandbox Code Playgroud)

或者......(我最终走的路线):

LIST_lys="lys1 lys2"
...
LIST=(${!_LIST})
Run Code Online (Sandbox Code Playgroud)

当然,假设元素不包含空格。

bash array

10
推荐指数
2
解决办法
5346
查看次数

标签 统计

array ×1

bash ×1

conventions ×1

vim ×1