一键获取shell脚本
1. shell脚本,获取目录的结构,保存到文件
使用递归的shell脚本没有find效率高。find 是为目录搜索而优化过的程序。
#!/bin/bash
DIR="$1"
if [ -z "$2"] ;then
echo "must set 2st argument for output file ." >& 2
exit 1
fi
OUT="$2"
DIR=$(readlink -m "$DIR")
#转换成绝对路径
find "$DIR" -type "d" >"$OUT"
#搜索目录保存到输出文件。
2. linux脚本如何一键授权并执行
在当前路径下输入r chmod 777 脚本名r 给脚本授权,r 然后就可以执行脚本r ./脚本名 r r 777 是最高权限,有读、写、执行权限;和属组用户和其他用户的读、写、执行权限。r 其他权限分别是r -rw------- (600) -- 只有读写权限。r -rw-r--r-- (644) -- 只有有读写权限;而属组用户和其他用户只有读权限。r -rwx------ (700) -- 只有有读、写、执行权限。r -rwxr-xr-x (755) -- 有读、写、执行权限;而属组用户和其他用户只有读、执行权限。r -rwx--x--x (711) -- 有读、写、执行权限;而属组用户和其他用户只有执行权限。
Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法:
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本
方法二:以绝对路径的方式去执行bash shell脚本
方法三:直接使用bash 或sh 来执行bash shell脚本
方法四:在当前的shell环境中执行bash shell脚本
3. shell脚本获取参数&在线执行shell脚本
本文介绍以下升携伏2个知识点,为后后续在工作过程中安装一吵携键安装脚本打好基础:
如下shell脚本中传入的参隐链数依次值如下:
如脚本 getopts.sh
执行 ./getopts.sh -a dd -b ,打印如下结果
如脚本 for.sh
有时候shell脚本可以放在http页面上,不用download,可以直接执行。
https://www.cnblogs.com/klb561/p/8933992.html
https://www.cnblogs.com/faberbeta/archive/2004/01/13/13559686.html
4. 如何从shell脚本获取一个结果
将一条命令的执行结果取得命令执行结果的值有:
1、使用反引号`` (数字键1左边的键,tab键上面,英文方式输入)如:a=`echo "hello world"`;即将命令 echo "hello world"的输出赋给变量a
2、可以使用 $(()),如:a=$(echo "hello world"),即将命令echo "hello world"的输出赋给变量a。
5. 如何获取传入给shell脚本的最后一个参数
执行“nano test.sh”创建一个新的shell脚本。
脚本test.sh的内容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
给新创建的test.sh的脚本赋可执行权限,命令为“chmod 755 test.sh”。
执行'./test.sh "xiao wang"'命令,可以看到自己编写脚本的结果“the xiao wang are great man!”。
5
"name=$1"中$1为系统提供的位置参数,$0代表程序的名称,[$1/$2/...]从1开始为传递的参数。
6
linux系统除了提供位置参数还提供内置参数,内置参数如下:
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
6. 达梦数据库shell脚本怎么获取查询语句结果集
方式一
当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误操作
在这里插入图片描述
方式二
使用shell脚本执行sql
1. 先找到达梦数据库安装位置吧
[root@localhost ~]# ss -nlp |grep 5236
tcp LISTEN 0 128 [::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4))
[root@localhost ~]# 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/dm.ini -noconsole
1
2
3
4
5
1
2
3
4
5
2. 直接在linux上执行shell命令执行sql脚本
2.1 # disql username/password:port
使用这个命令可以进入sql控制台
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.524(ms)
disql V8
SQL>
进入SQL>后:
直接输入sql语句,使用英文分号结尾,回车执行。
使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)
使用“start sql文件路径”,可以执行sql脚本文件。
2.2 # disql username/password:port `sql文件位置
使用这个命令可以执行sql脚本
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/test.sql
[root@localhost sql]#
1
2
1
2
但需注意
这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。
这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。
2.3 达梦sql脚本注意事项
目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束
例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 6.121(ms)
disql V8
SQL> create schema test;
2
3 /
操作已执行
已用时间: 26.698(毫秒). 执行号:700604.
SQL>
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_MOBILE.T_ZJTQD';
end if;
end;
/
create table DB_ZFBA_MOBILE.T_ZJTQD
(
"C_BH" char(32) NOT NULL, -- 主键
"C_BH_AJ" varchar2(32) NULL, -- 案件编号
……
"DT_ZHXGSJ" datetime NULL, -- 最后修改时间
constraint 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_创建数据库对象/00.CS_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00.CS_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/00.CS_GSYS.sql"
# STEP 2
echo "【开始执行】---- sql/02_创建数据库对象/01.CT_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01.CT_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/01.CT_GSYS.sql"
# STEP 3
echo "【开始执行】---- sql/02_创建数据库对象/02.CC_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02.CC_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/02.CC_GSYS.sql"
# STEP 4
echo "【开始执行】---- sql/02_创建数据库对象/03.CI_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03.CI_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/03.CI_GSYS.sql"
# STEP 5
echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"
# STEP 6
echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"
# Complete
echo "【SQL全部执行完成】---- 日志请查看DB_DM.log"
执行完成后,通过shell控制台和DB_DM.log日志可以分析sql脚本是否执行成功。