shell数组分隔符
来源:互联网 发布:刷机游戏数据 编辑:程序博客网 时间:2024/04/28 12:23
shell数组默认拿空格当分隔符,但如果元素里面包含空格怎么办呢?
% cat t3.sh
#!/usr/bin/ksh
set -A arr1 `sqlplus -s /NOLOG <<EOF
connect username/password@SID;
whenever sqlerror exit sql.sqlcode
set pagesize 0 feedback off verify off heading off echo off
SELECT col1|| ':' || col2 from t1;
exit;
EOF`
i=0
while [ $i -lt ${#arr1[*]} ]
do
echo ${arr1[$i]}
let i=$i+1
done
t1表有两条记录记录
SQL> select * from t1;
COL1 COL2
---------- ----------
1 aa
2 bb cc
但是t3.sh脚本执行结果却显示有3条记录,原因就是'bb cc'中间的空格当成了数组的分隔符。
golddev OEA#/tmp >./t3.sh
1:aa
2:bb
cc
尝试给字段加单引号、双引号、回车符、换行符都不管用。
chr(10)||col1|| ':' || col2 ||chr(10)
chr(13)||col1||':'||col2||chr(13)
'"'||||col1||':'||col2||'"'
''''||col1||':'||col2||''''
用IFS重新定义分隔符才解决了这个问题。
% cat t3.sh
#!/usr/bin/ksh
IFS="!!"
set -A arr1 `sqlplus -s /NOLOG <<EOF
connect username/password@SID;
whenever sqlerror exit sql.sqlcode
set pagesize 0 feedback off verify off heading off echo off
SELECT col1|| ':' || col2 from t1;
exit;
EOF`
i=0
while [ $i -lt ${#arr1[*]} ]
do
echo ${arr1[$i]}
let i=$i+1
done
执行结果如下
%./t3.sh
1:aa
2:bb cc
%
% cat t3.sh
#!/usr/bin/ksh
set -A arr1 `sqlplus -s /NOLOG <<EOF
connect username/password@SID;
whenever sqlerror exit sql.sqlcode
set pagesize 0 feedback off verify off heading off echo off
SELECT col1|| ':' || col2 from t1;
exit;
EOF`
i=0
while [ $i -lt ${#arr1[*]} ]
do
echo ${arr1[$i]}
let i=$i+1
done
t1表有两条记录记录
SQL> select * from t1;
COL1 COL2
---------- ----------
1 aa
2 bb cc
但是t3.sh脚本执行结果却显示有3条记录,原因就是'bb cc'中间的空格当成了数组的分隔符。
golddev OEA#/tmp >./t3.sh
1:aa
2:bb
cc
尝试给字段加单引号、双引号、回车符、换行符都不管用。
chr(10)||col1|| ':' || col2 ||chr(10)
chr(13)||col1||':'||col2||chr(13)
'"'||||col1||':'||col2||'"'
''''||col1||':'||col2||''''
用IFS重新定义分隔符才解决了这个问题。
% cat t3.sh
#!/usr/bin/ksh
IFS="!!"
set -A arr1 `sqlplus -s /NOLOG <<EOF
connect username/password@SID;
whenever sqlerror exit sql.sqlcode
set pagesize 0 feedback off verify off heading off echo off
SELECT col1|| ':' || col2 from t1;
exit;
EOF`
i=0
while [ $i -lt ${#arr1[*]} ]
do
echo ${arr1[$i]}
let i=$i+1
done
执行结果如下
%./t3.sh
1:aa
2:bb cc
%
- shell数组分隔符
- shell字段分隔符IFS
- shell 域分隔符学习
- 数组分隔
- shell文件读取及字符串分隔符
- [Shell]更改字段分隔符IFS示例
- 指定分隔符连接数组元素join()
- 数组转String并带分隔符
- shell字符分隔
- shell awk按分隔符读取文件 [大三TJB_708]
- shell学习:内部字段分隔符IFS、脚本调试DEBUG
- Shell脚本基础学习(八)----字段分隔符IFS
- shell 脚本截取指定分隔符的第几项
- linux shell编程之利用环境变量IFS自定义分隔符
- Js以分隔符分隔数组中的元素并转换为字符串
- shell 分隔字符串成数组
- 字符分割,把字符串按分隔符变成数组
- 数据库插入单引号,数组分隔符的山寨法
- 飞机对抗仿真——界面原形设计/UI原型设计
- 安装新SVN,并导入之前SVN版本库操作手记
- 解决 Gentoo ibus 无法安装问题
- 系统架构师是做什么的
- Nand Flash -详述2
- shell数组分隔符
- Linux服务器使用SSH的命令
- Linux socket编程学习初步(4)--服务器端多进程
- 数据结构与算法面试总结
- Win7获取权限操作
- Volatile 关键字
- C-TPAT认证简介(一)
- Nand Flash -详述3
- nginx支持redis,实现替换nginx+memcache方式