Shell-Script
在 ksh 中附加 sql 查詢的輸出時輸出損壞
我對腳本很陌生。我想將下面給出的 sql 函式的輸出添加到另一個變數中,例如:
month_end () { mdate=$($SQLPLUS_HOME/sqlplus.exe -S $DBC << END set pagesize 0 feedback off verify off heading off echo off; select to_char(last_day(add_months(sysdate,-1)),'yyyymmdd') from dual; exit; END ) }
當我回顯 $mdate 的輸出時,它是完美的。(20160531)
但是當我附加到另一個變數時,整個值被破壞(_WORLD.txt 而不是 Hello_20160531_WORLD.txt)。
FILENAME=Hello EXTENSION=WORLD.txt NAME=$FILENAME_${mdate}_${EXTENSION} echo ${NAME}
那是因為下劃線
_
是變數名的有效部分,所以你還需要花括號FILENAME
:NAME=${FILENAME}_${mdate}_${EXTENSION}
\r
根據您的其他回复,您似乎在 FILENAME 分配行或 sqlplus 的輸出中也有一個輸入符 ( )$mdate
。cat -v
通過在您的 shell 腳本上執行和/或執行echo $mdate | cat -v
. 因為我剛剛注意到 sqlplus。exe,我假設您在類似 Cygwin 的環境中執行,這可能會添加輸入符。mdate=${mdate//^M/}
通過鍵入 control-v、control-m添加輸入 ^M 的位置來修復它。