shell脚本返回执行结果(怎么在shell脚本里面获得sqlplus执行的结果)
本文目录
- 怎么在shell脚本里面获得sqlplus执行的结果
- Linux Shell 怎样获得命令的执行结果
- 如何在shell脚本中,判断一个基本命令执行是否成功
- 达梦数据库shell脚本怎么获取查询语句结果集
- shell脚本执行sql传出结果
- shell 脚本能不能有返回值,
- shell脚本的一个返回值问题
- Shell命令的退出状态及错误检查
- 利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集
- shell脚本如何回显执行的命令
怎么在shell脚本里面获得sqlplus执行的结果
请参考下面这个方法:
备注:getDbUserByTableName $TableName是获取表在哪个数据库的。你可以直接把$DbUSER换成tns串或者别名即可。
#sqlplus连接数据库的方法
#需要传入两个参数,第一个是表名,一个是需要执行的sql语句,一条语句作为一行
sqlBossDb(){
TableName=$1
SqlStr=$2
getDbUserByTableName $TableName
DbUSER=`cat *****`
Note_Log "$DbUSER连接数据库,执行语句$SqlStr"
eval echo \${$DbUSER} 》***** #查询出来是*****中DBUSERNAME项,需要换成DBUSERSTR项
DbUSER=`cat *****`
#Note_Log "开始 $DbUSER"
sqlplus $DbUSER 《《!
set linesize 1000
$SqlStr
commit;
quit
!
e
Linux Shell 怎样获得命令的执行结果
1、CAT命令在用户主目录下创建一名为f1的文本文件,内容:Linux is useful for us ***** can never imagine how great it is。
2、向文件f1增加以下内容:Why not have a try?。
3、输入命令“wc 《f1》 countf1”,屏幕上不显示任何信息。
4、输入命令“cat countf1”,查看countf1文件的内容,其内容是f1文件的行数,和单词数及字符数信息。
5、即f1文件共有3行,19个单词和87的字符。
如何在shell脚本中,判断一个基本命令执行是否成功
符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败。
用特殊变量:$?判断前一个命令的执行是否成功(或者说是返回码)执行成功变量的值是0,不是零表示没有执行成功例如:注意:一定要在命令执行后立即判断,否则后面的代**冲掉$?变量的值。
shell脚本中判断上一个命令是否执行成功shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败。结合if-else语句实现判断上一个命令是否执行成功。
第一步,将编写的bat批处理文件拖到cmd命令窗口中,以定期清除旧数据,见下图,转到下面的步骤。
、可以通过ps命令获取所有的进程,然后通过awk命令提取进程名,再用grep提取相应的进程名即可。
达梦数据库shell脚本怎么获取查询语句结果集
方式一
当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误操作
在这里插入图片描述
方式二
使用shell脚本执行sql
1. 先找到达梦数据库安装位置吧
# ss -nlp |grep 5236
tcp LISTEN 0 128 :* users:(("dmserver",pid=103380,fd=4))
# ps -ef|grep dmserver
root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver
dmdba 103380 1 8 13:36 ? 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/***** -noc***ole
1
2
3
4
5
1
2
3
4
5
2. 直接在linux上执行shell命令执行sql脚本
*** # disql username/password:port
使用这个命令可以进入sql控制台
# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236
服务器:处于普通打开状态
登录使用时间 : *****(ms)
disql V8
**L》
进入**L》后:
直接输入sql语句,使用英文分号结尾,回车执行。
使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)
使用“start sql文件路径”,可以执行sql脚本文件。
*** # disql username/password:port `sql文件位置
使用这个命令可以执行sql脚本
# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/*****
#
1
2
1
2
但需注意
这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。
这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。
*** 达梦sql脚本注意事项
目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束
例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。
# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236
服务器:处于普通打开状态
登录使用时间 : *****(ms)
disql V8
**L》 create schema test;
2
3 /
操作已执行
已用时间: *****(毫秒). 执行号:700604.
**L》
sql脚本示例:
-- 创建schema
CREATE SCHEMA DB_ZFBA_MOBILE;
/
-- 执行过程
begin
if exists(select 1 from DBA_TAB_COLUMNS where OWNER=’DB_ZFBA_MOBILE’ AND TABLE_NAME=’T_ZJTQD’) then
EXECUTE immediate ’drop table DB_ZFBA_*****_ZJTQD’;
end if;
end;
/
create table DB_ZFBA_*****_ZJTQD
(
"C_BH" char(32) NOT NULL, -- 主键
"C_BH_AJ" varchar2(32) NULL, -- 案件编号
……
"DT_ZHXGSJ" datetime NULL, -- 最后修改时间
c***traint PK_T_ZJTQD primary key( C_BH )
);
sql文件结尾添加exit;,保证多个sql文件执行不会中断
3. 编写shell脚本
注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)
例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b
#!/bin/bash
# 请先配置数据库连接信息,再执行此脚本
DM_PATH=/home/dmdba/dmdbms #达梦数据库的安装位置
USERNAME=cpuser #达梦数据库连接用户名
PASSWORD=cpuser123 #达梦数据库连接密码
PORT=5236 #达梦数据库连接端口号
# 下面的信息请不要随意修改
CONNECT_INFO=$USERNAME/$PASSWORD:$PORT
echo "连接信息:"$CONNECT_INFO
# STEP 1
echo "【开始执行】---- sql/02_创建数据库对象/*****_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/*****_***** 》》 DB_*****
echo "【执行完成】---- sql/02_创建数据库对象/*****_*****"
# STEP 2
echo "【开始执行】---- sql/02_创建数据库对象/*****_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/*****_***** 》》 DB_*****
echo "【执行完成】---- sql/02_创建数据库对象/*****_*****"
# STEP 3
echo "【开始执行】---- sql/02_创建数据库对象/*****_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/*****_***** 》》 DB_*****
echo "【执行完成】---- sql/02_创建数据库对象/*****_*****"
# STEP 4
echo "【开始执行】---- sql/02_创建数据库对象/*****_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/*****_***** 》》 DB_*****
echo "【执行完成】---- sql/02_创建数据库对象/*****_*****"
# STEP 5
echo "【开始执行】---- sql/03_初始化数据/****_T_Aty_CodeType_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/****_T_Aty_CodeType_***** 》》 DB_*****
echo "【执行完成】---- sql/03_初始化数据/****_T_Aty_CodeType_*****"
# STEP 6
echo "【开始执行】---- sql/03_初始化数据/****_T_Aty_Code_*****"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/****_T_Aty_Code_***** 》》 DB_*****
echo "【执行完成】---- sql/03_初始化数据/****_T_Aty_Code_*****"
# Complete
echo "【**L全部执行完成】---- 日志请查看DB_*****"
执行完成后,通过shell控制台和DB_*****日志可以分析sql脚本是否执行成功。
shell脚本执行sql传出结果
shell脚本执行sql需要输出结果,可以在shell脚本中写入语句,执行完成sql语句后,结果定向输入到一个txt文本文件中,再把txt文本文件存放在固定的文件夹中即可。
shell 脚本能不能有返回值,
return是退出某个函数,exit是退出整个脚本,这两个都可以返回某个数值,但不能是字符串。
shell脚本的一个返回值问题
返回值$?即Exit Status
结果不为0,则回传真值(0),
算式结果为0,则回传假值 1,
$? exit值 跟 c 语言类似,用来输出一个编码,
一般输出 0 表示执行成功,
1-125 的值表示表示错误码,意味着脚本执行出了问题。
在Bash中,当错误发生在致命信号时,bash会返回128+signal number做为返回值。如果找不到命令,将会返回127。如果命令找到了,但该命令是不可执行的,将返回 126。除此以外,Bash本身会返回最后一个指令的返回值。若是执行中发生错误,将会返回一个非零的值。
Shell命令的退出状态及错误检查
Shell中执行的每个命令都会通过退出状态码(exit status)来返回命令的执行结果,它是0~255之间的整数值。
此时你会看到的结果是 0
默认状态下,shell脚本会以脚本中的最后一个命令作为退出状态码。所以一般情况下,在shell脚本中以 exit 命令的值来指定shell命令的退出状态码。但是退出状态码的范围是 0 ~ 255, 退出值超出这个范围将会执行取模运算。例如通过exit 命令指定返回值为300,经过取模运算,那么退出状态码就为44。
利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集
假设从主机A,检查主机B上的进程,
需要在主机B上建立检查用户,例如叫x,
并设置通过public key认证登录SSH,不会可以google搜一下,
然后,在A机器上执行:
ssh x@B ~/***** 》 *****
*****就是B机器上放置在x目录下的脚本。
输出结果应该是写到了*****
或者另一种写法
result=`ssh x@B ~/*****`
结果直接保存到result变量中了。
暂时没有linux环境,所以没有实际测试,你自己试试吧
shell脚本如何回显执行的命令
不显示任何输出信息可以在产生输出信息的位置加 》 /dev/null,例如 echo aaa 》 /dev/null,这样不会产生任何输出信息。
更多文章:
jupyter怎么运行python程序(写Python使用那个IDE方便点,有个可以在网页上写代码实时出结果的那个是哪个)
2026年5月10日 13:40
软件测试工程师需要考什么证?软件评测师算国家职业资格证吗(全脑培训师资格证书)
2026年5月10日 13:20
shell脚本返回执行结果(怎么在shell脚本里面获得sqlplus执行的结果)
2026年5月10日 12:20
tooth有几个音节?Android开发之蓝牙(Bluetooth)
2026年5月10日 12:00
unity sendmessage(如何在Unity3d中实现和网页数据的交互)
2026年5月10日 11:40
mvc拦截器只执行了一次(求助SpringMVC拦截器不起作用)
2026年5月10日 11:00
jquery弹出div窗口(如何在jquery中弹出div层并在div层中绑定查询的数据)
2026年5月10日 10:40





