【问题标题】:How to convert a variable to string format? KSH shell scripting如何将变量转换为字符串格式? KSH 外壳脚本
【发布时间】:2018-11-09 17:37:32
【问题描述】:

我正在尝试将变量转换为字符串格式,以便以后可以使用 java runsql 实用程序将其值插入数据库。数据库需要值是 char 格式,因此是字符串。

这是我的代码的简化版本,因此我可以深入了解我要问的内容 -

#!/bin/ksh -x
value1=2018-01-01
value2=2018-02-01

mystring=$value1,$value2
echo $mystring

stringify=${'value1'},${'value2'})
echo $stringify

发生的情况是我没有得到 stringify 的输出,或者取决于我如何切换符号的排列,我得到了文字字符串 'value1''value2'

我做错了什么?我觉得这很简单,也许我只是盯着它太久了,我不知道。

【问题讨论】:

  • 为什么${'value1'} 中有引号?他们打算做什么?明确显示您的预期输出(我想要的输出是 X,我的实际输出是 Y)将使这个问题更容易理解。
  • ...非常非常清楚——您在这里拥有的每一个变量已经是一个字符串mystring 是一个字符串。 value1value2 包含字符串。这段代码不包含任何非字符串变量——所以当你说“将变量转换为字符串格式”时,你根本不清楚你在问什么。
  • @WalterA OP 对 SQL 的预期用途表明他们想要引用该值。
  • 谢谢@Vasan,错过了,删除了我的评论。

标签: shell unix scripting ksh


【解决方案1】:

你可以像这样转义引用:

mystring=\'$value1\',\'$value2\'

输出:

$ echo $mystring

'2018-01-01','2018-02-01'

获得相同输出的更简单的选择(如@CharlesDuffy 所建议)是:

mystring="'$value1','$value2'"

【讨论】:

  • 我建议改为mystring="'$value1','$value2'" -- 没有所有反斜杠更易于阅读。
【解决方案2】:

你可以这样做,更简单:

#!/bin/ksh -x
value1=2018-01-01
value2=2018-02-01

mystring=$value1,$value2
echo $mystring

stringify="'$value1','$value2'" #use double-quotes around the variables
echo $stringify

输出:

2018-01-01,2018-02-01
'2018-01-01','2018-02-01'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2018-08-12
    • 2021-12-02
    相关资源
    最近更新 更多