[20190126]从sqlplus执行结果返回bash shell变量.txt

来源:这里教程网 时间:2026-03-03 12:54:20 作者:

[20190126]从sqlplus执行结果返回bash shell变量.txt --//前几天写bash shell脚本遇到的问题,自己以前忽略这个问题,通过例子说明。 $ cat d.sh # this is a test file_name=`sqlplus -S sys/a as sysdba <<EOF set head off select name c100  from v\\$dbfile where file#=11; quit EOF ` echo 1111 $file_name 2222 echo "1111 $file_name 2222" --//执行如下: $ . d.sh 1111 D:\APP\ORACLE\ORADATA\TEST\TEST01P\USERS01.DBF 2222 1111 D:\APP\ORACLE\ORADATA\TEST\TEST01P\USERS01.DBF 2222 --//在调试时遇到的问题,按照道理感觉2者的显示应该一样,实际上第2次执行(带引号)的部分,明显$file_name里面含有1个回车。 --//有点不理解的地方是为什么第1次执行可以在一行显示。 --//改成如下,两者就显示一样了: # this is a test  file_name=`sqlplus -S sys/a as sysdba <<EOF set head off pagesize 0 feedback off verify off  echo off select name c100  from v\\$dbfile where file#=11; quit EOF echo 1111 $file_name 2222 echo "1111 $file_name 2222" $ . d.sh 1111 D:\APP\ORACLE\ORADATA\TEST\TEST01P\USERS01.DBF 2222 1111 D:\APP\ORACLE\ORADATA\TEST\TEST01P\USERS01.DBF 2222 --//我看了以前的脚本有一些都是第一种写法的,居然没有报错。bash shell在处理变量值里面带有回车之类字符时 --//如果不使用引号引起来,删除回车之类字符输出,而带引号原样输出。 --//可以通过如下例子说明: $ a=$(cat d.sh) $ echo $a # this is a test file_name=`sqlplus -S sys/a as sysdba <<EOF set head off pagesize 0 feedback off... --//变成一行。 $ echo "$a" # this is a test file_name=`sqlplus -S sys/a as sysdba <<EOF set head off pagesize 0 feedback off verify off  echo off select name c100  from v\\$dbfile where file#=11; quit EOF ` echo 1111 $file_name 2222 echo "1111 $file_name 2222"

相关推荐