KSH shell脚本中如何将变量转换为字符串格式?
搞定Ksh变量字符串拼接的问题
嘿,我来帮你梳理下你遇到的问题~你写的Ksh脚本里,变量引用的语法出问题啦,导致stringify要么没输出要么显示字面量,咱们一步步来解决:
为啥你的写法不对?
你写的${'value1'}这种格式是错误的——在Ksh里,单引号会把里面的内容当作纯字面量,shell不会把'value1'当成变量名去解析它的值。再加上你那行末尾多了个多余的右括号),这会直接导致命令执行失败,自然要么没输出要么显示奇怪的内容。
而且其实你不用特意“转换”变量为字符串,Ksh里所有变量本质上都是字符串类型,value1=2018-01-01本身就是字符串变量了,只要正确引用就能拿到值。
正确的写法来啦
基础拼接(和你mystring的逻辑一致)
如果只是要把两个变量值用逗号拼接成字符串,直接正确引用变量就行:
#!/bin/ksh -x value1=2018-01-01 value2=2018-02-01 mystring=$value1,$value2 echo $mystring # 正确的变量引用方式,去掉多余括号和单引号 stringify="${value1},${value2}" echo $stringify
运行后stringify会输出2018-01-01,2018-02-01,和mystring的结果一致。
适配数据库插入(给值加单引号)
如果你的Java RunSQL工具需要把字符串用单引号包裹(比如SQL语句里的VALUES ('2018-01-01','2018-02-01')),可以给每个变量值套上单引号再拼接:
#!/bin/ksh -x value1=2018-01-01 value2=2018-02-01 # 给每个变量值加上单引号,再拼接 stringify="'${value1}','${value2}'" echo $stringify # 输出结果:'2018-01-01','2018-02-01'
这样的格式就可以直接放到SQL语句的VALUES部分使用啦。
内容的提问来源于stack exchange,提问作者TSMfan688
相关产品推荐
相关产品推荐

