indirection

更新
indirection

更新

抱歉,这太令人困惑了,(我的错) 让我尝试再次解释一下,但用一个更简单的例子: #define a new var and export it to the "env": export VAR_ONE=thisIsVarOne # check if it was created: env | grep VAR_ONE #this displays: "VAR_ONE=thisIsVarOne" # use it in a simple echo command: echo VAR_ONE=$VAR_O...

Admin

为什么我不需要使用带有字符串替换的 bash 间接寻址?
indirection

为什么我不需要使用带有字符串替换的 bash 间接寻址?

我在 bash 脚本编写中遇到的一件具有挑战性的事情是以递归方式使用变量扩展。 然而,我[通过 ChatGPT] 发现我可以使用间接替换来引用位置参数值: linkerArgs+=("${!i}") 但是,如果我使用字符串替换,那么我可以按照逻辑上的方式以递归方式使用扩展: "${x// /$newChar}" 为什么 bash 解释器在将项分配给数组的上下文中使用时将后一种类型的扩展(仅在括号内包含美元符号)视为“错误替换”,而不是在字符串替换中使用? ...

Admin

引号中的命令替换不能用于调用变量
indirection

引号中的命令替换不能用于调用变量

说: variable="Something that it holds" 然后 echo "$variable"将输出: 它持有的东西 但说我也这样做: var2="variable"; echo "\$$(echo $var2)" 只会输出:$variable 而不是: 它所拥有的东西 谁能告诉我 Unix 的哪些功能在这里发挥作用? ...

Admin

bash 数组中的间接访问
indirection

bash 数组中的间接访问

我正在尝试执行以下间接任务: host_1=(192.168.0.100 user1 pass1) host_2=(192.168.0.101 user2 pass2) hostlist=( "host_1" "host_2" ) for item in ${hostlist[@]}; do current_host_ip=${!item[0]} current_host_user=${!item[1]} current_host_pass=${!item[2]} echo "IP: $current_host_ip User: $current_h...

Admin

zsh 通过间接扩展测试关联数组中键是否存在
indirection

zsh 通过间接扩展测试关联数组中键是否存在

所以我知道您可以通过间接扩展来测试常规参数的存在,方法如下: foo=1 bar=foo (( ${(P)+bar} )) && print "$bar exists" 我知道您可以通过执行以下操作来测试关联数组中是否存在键: foo=([abc]=1) (( ${+foo[abc]} )) && print "abc exists" 但是,我无法弄清楚如何将两者结合起来并通过间接扩展测试关联数组中是否存在键。不使用 eval 可以吗? 我尝试了几种组合,包括以下组合,但没有一个有效: foo=([abc]=1...

Admin

我可以在 Bash 中应用多少级间接?
indirection

我可以在 Bash 中应用多少级间接?

在 bash 中,我知道我们可以通过两种方式进行变量间接扩展: 使用declare:declare -n foo=bar 使用${!..}扩展。 我们可以将两者结合起来: declare -n foo=SHELL bar=foo echo ${!bar} 给出: /bin/bash 是否可以将其扩展到更多级别? 这主要是关于编写混淆代码——我的一些朋友正在互相挑战。 ...

Admin

使用 bash 变量间接寻址时如何访问数组的更多成员?
indirection

使用 bash 变量间接寻址时如何访问数组的更多成员?

考虑下面的例子,看起来它与索引一起工作得很好0: $ a1=(1 2 3) $ a2=(a b c) $ for x in a1 a2; do echo "${!x}"; done 1 a $ for x in a1 a2; do echo "${!x[0]}"; done 1 a 然而,使用索引1它不会打印任何内容: $ for x in a1 a2; do echo "${!x[1]}"; done 数组本身就很好: $ echo "${a1[1]} ${a2[1]}" 2 b 编辑 - 基于的现实生活用例伊尔卡丘回答 SHI...

Admin

连接字符串以形成现有变量名称并在数组封装格式中工作
indirection

连接字符串以形成现有变量名称并在数组封装格式中工作

#!/bin/bash mat_1=(ServerAB ServerFR ServerPE ServerAM ServerHU) st="mat_1"; indirect_var='${'${st}'[@]}' #(Please, see the "--Desired Ouput Section--" in comments) #----- What is Hapenning now at output ---- echo Values of "mat_1 ": ${mat_1[@]} echo Indirect value of "mat_1": ${...

Admin