我有以下内容:
#!/bin/sh
n=('fred' 'bob')
f='n'
echo ${${f}[@]}
我需要在替换后执行
的底线echo ${n[@]}
任何方式这样做?我得到了
test.sh: line 8: ${${f}}: bad substitution
在我的结尾。
答案 0 :(得分:16)
你可以使用这样的数组进行变量间接:
subst="$f[@]"
echo "${!subst}"
正如soulmerge所说,你不应该使用#!/bin/sh
。我使用#!/usr/bin/env bash
作为我的shebang,无论Bash在你的路上在哪里都可以使用。
答案 1 :(得分:5)
您可以eval
所需的行:
eval "echo \${${f}[@]}"
BTW:你的第一行应该是#!/bin/bash
,你正在使用像阵列这样的特定于bash的东西