Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix ksh将字符串拆分为数组以写入文件_Unix_Ksh - Fatal编程技术网

Unix ksh将字符串拆分为数组以写入文件

Unix ksh将字符串拆分为数组以写入文件,unix,ksh,Unix,Ksh,下面是我用来从数据库中选择字符串的代码。拆分,然后写入文本文件 #Get information from DB for the given entrynum RETVAL=`sqlplus -s username/pwd@db <<EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT (entrynum|| '-'||path||'-'|| syear||'-'|| eyear||'-'||

下面是我用来从数据库中选择字符串的代码。拆分,然后写入文本文件

#Get information from DB for the given entrynum
RETVAL=`sqlplus -s username/pwd@db <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT  (entrynum|| '-'||path||'-'|| syear||'-'|| eyear||'-'|| type) as RET
    FROM  entrydetails WHERE entrynum = 123;

EXIT;
EOF`    

print "$scriptname return value :$RETVAL " 1>&2
#Output :123-/userx/data/tt-2015-2015-1

#split each value into an array
arr=$(echo $RETVAL | tr "-" "\n")

#write to text variable
writeText="export entrynum=${arr[0]}\n
          export path=${arr[1]}\n
          export Syear=${arr[2]}\n
          export eyear=${arr[3]}\n
          export type=${arr[4]}";

#write text to file
echo $writeText > ../in/log_file
预期结果是

export entrynum=123   
export path=/userx/data/1
export syesr=2015
export eyear=2015 
export type=1

在数组赋值周围还需要一对paren

arr=$echo$RETVAL | tr-\n

美元是一个估价。arr=是复合赋值。Split是空白的,所以您甚至可以使用空格而不是换行符来像这样进行tr

tr-

如果您的ksh不支持复合赋值,您可以使用set-A


set-A arr-$echo$RETVAL | tr-

它对我有效-ksh版本sh AT&T Research 93u+2012-08-01-替代方法是使用显式集合-我更新了答案以说明这一点,并尝试检查验证[echo\c | grep c]&echo ksh93 | echo ksh88。是ksh88。我仍然得到同样的错误是的,你需要93的=。我更新了答案,提供了另一种选择
export entrynum=123   
export path=/userx/data/1
export syesr=2015
export eyear=2015 
export type=1