我正在使用这个shell脚本
#!/bin/sh
file_name="'STG_MAP_RM_ARN'"
var_log_tbl_date="'29-MAR-2016'"
var_err_file_list=$($ORACLE_HOME/bin/sqlplus -s obi_user/obi_user@UNNATIDEV
<<
END
set pagesize 0 feedback off verify off heading off echo off;
SELECT WM_CONCAT(A) FROM (SELECT DISTINCT COL15 AS A FROM ERROR_TABLE WHERE FILENAME=${file_name} AND FILEDATE=${var_log_tbl_date});
exit;
END
)
echo $var_err_file_list
如果我在sql中执行命令,则输出为:
20160727_RM_ARN_MAPPING.csv,YYYYMMDD_RM_ARN_MAPPING.csv,20160728_RM_ARN_MAPPING.csv
但是shell脚本输出是:
20160727_RM_ARN_MAPPING.csv,YYYYMMDD_RM_ARN_MAPPING.csv,20160728_RM_ARN_MAPPING。
如您所见,shell输出被截断(o / p中缺少.csv)
Unix中的变量大小是否有限制?
请帮帮我
答案 0 :(得分:1)
几乎没有其他选择:
1)您可以使用mktemp命令创建临时文件,将内容重定向到该文件,根据需要重复使用内容,然后删除该文件。
mktemp mytemp_file_XXXXXXXXX.log
2)像mk_fifo这样的替代品与tee命令结合使用,可以复制输出并将其引导到多个命令中。如果你的shell允许你(ksh93,zsh,bash),你也可以安排重复的输出,如下所示:
# Writes stdout into both
cat main.c > 1.txt > 2.txt
#Duplicates output to two cat commands; also writes it to console
cat main.c | tee >( cat>1.txt) >(cat>2.txt)
要使用这些功能,您需要bash,zsh或ksh93。
请参阅此相关post
答案 1 :(得分:-1)
似乎没有每个变量限制,但所有变量的总体限制在一起。 看到: What is the maximum size of an environment variable value?