我正在尝试将一些文本组合到变量中并输出组合变量的值。例如:
testFILE=/tmp/some_file.log
function test_param {
echo $1
echo test$1
echo $(test$1) #this is where I want to output the value of the combined variable
}
test_param FILE
输出将是:
FILE
testFILE
/tmp/some_file.log <-- this is what I can't figure out.
有什么想法吗?
如果我没有使用正确的术语,请纠正我。
谢谢, 贾里德
答案 0 :(得分:4)
尝试以下方法:
#!/bin/bash
testFILE=/tmp/some_file.log
function test_param {
echo $1
echo test$1
varName=test$1
echo ${!varName}
}
test_param FILE
!
之前的varName
表示它应该根据$varName
的内容查找变量,因此输出为:
FILE
testFILE
/tmp/some_file.log
答案 1 :(得分:2)
#!/bin/bash
testFILE=/tmp/some_file.log
function test_param {
echo $1
echo test$1
eval "echo \$test$1"
}
test_param FILE
输出:
FILE
testFILE
/tmp/some_file.log
答案 2 :(得分:2)
试试这个:
testFILE=/tmp/some_file.log
function test_param {
echo $1
echo test$1
foo="test$1"
echo ${!foo}
}
${!foo}
是间接参数扩展。它表示取foo
的值并将其用作要扩展的参数的名称。我认为你需要一个简单的变量名称;我试了${!test$1}
没有成功。
答案 3 :(得分:1)
使用${!varname}
testFILE=/tmp/some_file.log
function test_param {
local tmpname="test$1"
echo "$1 - $tmpname"
echo "${!tmpname}"
}
test_param FILE
输出:
FILE - testFILE
/tmp/some_file.log
答案 4 :(得分:0)
这对我有用。我都输出了结果,并把它藏为另一个变量。
#!/bin/bash
function concat
{
echo "Parameter: "$1
dummyVariable="some_variable"
echo "$1$dummyVariable"
newVariable="$1$dummyVariable"
echo "$newVariable"
}
concat "timmeragh "
exit 0
输出结果为:
Parameter: timmeragh
timmeragh some_variable
timmeragh some_variable