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