PARAM中的ksh +参数

时间:2010-08-25 07:00:13

标签: shell ksh

是否可以打印值NUM100),而我必须只使用'而不是"

 # NUM=100
 # PARAM='some text $NUM'
 # echo $PARAM
   some text $value

正确的印刷品

some text 100

2 个答案:

答案 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)