我正在尝试使用"过程调用"将值从TK传递到cshell脚本。现在......如下。
proc Run {} {
global passedvalue
## to see what value it has for passedvalue
puts $passedvalue
exec sed -i {s/ABC/$passedvalue/g} runme.sh
exec /bin/csh -c ./runme.sh >@stdout 2>@stderr
}
我正在通过新的passvalue更改具有值ABC的行。 "放"正常工作并打印passvalue的值。 但它对sed不起作用,它给出了
错误:编程未定义的变量
请让我知道我在哪里做错了。
我也尝试过使用字符串映射,但也可以工作......我可能做错了。
答案 0 :(得分:2)
大括号可抑制变量替换。如果您希望在调用$passedvalue
之前展开exec
,则需要使用其他一些引用机制。
例如,您可以使用双引号:
exec sed -i "s/ABC/$passedvalue/g" runme.sh
但是,您需要添加一些额外的防弹。例如,如果$passedvalue
中包含/
,您将向sed
发送格式错误的表达式。