sql - 从逗号分隔的字符串中传递值并分配给 korn shell 中的不同变量
问题描述
我将 SQL 查询的结果作为逗号分隔的字符串导出到变量。如何将字符串中的每个值分配给变量名并导出。
$SQLOUTPUT_STRING=1,2018-05-16,abc,123
我想将上面字符串中的值分配给变量并导出它们
export VAR1=1
export VAR2=2018-05-16
export VAR3=abc
export VAR4=123
我在其他脚本中使用这些变量,所以我不能像上面那样命名这些通用变量,所以 VAR1、VAR2、VAR3、VAR4 不会是这种情况,它会是不同的名称。
提前致谢。
解决方案
您可以cut
在 shell 脚本中使用该命令来获取 CSV 文件的单个字段或整列,每次调用该cut
命令一个。cut
期望通过标准输入提供输入 CSV 数据,因此您可以使用“here”文档外壳功能将SQLOUTPUT_STRING
外壳变量的内容显示为标准输入。
以下命令序列将分别分配值1
、2018-05-16
、abc
和123
to :VAR1
VAR2
SQLOUTPUT_STRING=1,2018-05-16,abc,123
export VAR1=`cut -d, -f1 <<
$SQLOUTPUT_STRING
EOF
`
export VAR2=`cut -d, -f2 <<
$SQLOUTPUT_STRING
EOF
`
export VAR3=`cut -d, -f3 <<
$SQLOUTPUT_STRING
EOF
`
export VAR4=`cut -d, -f4 <<
$SQLOUTPUT_STRING
EOF
`
注意我使用了传统的 Bourne shell 反引号转义来使 shell 执行包含在反引号中的命令,并使用其输出作为文字替换值在export
语句中就地展开,因为您特别要求可移植 shell 代码。现代 ksh shell 语法中可能存在替代语法和重定向运算符。
推荐阅读
- javascript - 如何在 div 悬停时开发编辑选项
- android - S3ObjectManager + AppSync + Okta 中的会话已过期
- android - 在 Android 中加载包含图像的 pptx
- php - 与3表的雄辩关系
- c# - Parallel.Invoke 等到 HttpClient 重新登录 c#
- mysql - 如果 postid 不存在,MySQL 将记录插入一个表到另一个表
- c++ - 使用 c++ 开发时,宏 '__TIME__' 和 '__TIMESTAMP__' 无法刷新
- android - 使用搜索视图过滤 gridview
- python - Python 依赖地狱:virtualenv 和全局依赖之间的妥协?
- ios - 斯威夫特 | UIBarButton 不工作/不去行动目标