是否可以打印值NUM
(100
),而我必须只使用'
而不是"
# NUM=100
# PARAM='some text $NUM'
# echo $PARAM
some text $value
正确的印刷品
some text 100
答案 0 :(得分:1)
使用 双 引号代替 单 引号,因为单引号不允许变量插值:
NUM=100
PARAM="some text $NUM"
echo $PARAM
编辑:由于我不允许使用双引号,您可以使用连接:
NUM=100
PARAM='some text '$NUM
echo $PARAM
答案 1 :(得分:0)
非常不安全,但是:eval echo $PARAM
我强烈反对这一点:如果param在反引号中包含一些破坏性命令怎么办?要么重新考虑你的设计,要么重新考虑你的实现语言。
你至少可以先逃避反叛和$()
构造:
NUM=100
PARAM='this is $NUM -- `rm foo` -- $(rm bar)'
param_safer=$(echo "$PARAM" | sed 's/`/\\`/g; s/\$(\([^)]\+\))/\\$\\(\1\\)/g')
eval echo "$param_safer"
输出:this is 100 -- `rm foo` -- $(rm bar)