热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle去掉日期横杠,Shell中下划线_与变量的关系

一个shell脚本根据日期和时间自动备份数据数据库的时候遇到一个问题$viu01appbakbinpublic_serbak.sh#!binshexportORACLE_SIDor

一个shell脚本根据日期和时间自动备份数据数据库的时候遇到一个问题$ vi /u01/app/bak/bin/public_serbak.sh

#!/bin/sh

export ORACLE_SID=orcl

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH:/sbin/

export  LANG NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'

timedate=$(date +%Y%m%d%H%M%S)

bakdbname=public_ser

bakdbpasswd=123

dumpbame=public_ser

bakdbhome=/u01/app/bak

1、expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame_$timedate.dmp logfile=$bakdbname_$timedate.log

cd $bakdbhome

zip -r $dumpbame_$timedate.zip "$dumpbame_$timedate.dmp $bakdbname_$timedate.log

2、expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame"_"$timedate.dmp logfile=$bakdbname_$timedate.log

cd $bakdbhome

zip -r $dumpbame"_"$timedate.zip $dumpbame"_"$timedate.dmp $bakdbname"_"$timedate.log

3、expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile="$dumpbame"_"$timedate".dmp logfile="$bakdbname"_"$timedate".log

cd $bakdbhome

zip -r "$dumpbame"_"$timedate".zip "$dumpbame"_"$timedate".dmp "$bakdbname"_"$timedate".log

4、expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=${dumpbame}_${timedate}.dmp logfile=${bakdbname}_${timedate}.log

cd $bakdbhome

zip -r ${dumpbame}_${timedate}.zip ${dumpbame}_${timedate}.dmp ${bakdbname}_${timedate}.log

输出的四个文件:

20180815125435.dmp

public_ser_20180815125435.dmp

public_ser_20180815125435.dmp

public_ser_20180815125435.dmp

不是应该四个都一样么,都是dumpbame_timedate的格式吗?

用短横线:#!/bin/sh

export ORACLE_SID=orcl

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH:/sbin/

export  LANG NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'

timedate=$(date +%Y%m%d%H%M%S)

bakdbname=public_ser

bakdbpasswd=123

dumpbame=public_ser

bakdbhome=/u01/app/bak

expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log

cd $bakdbhome

zip -r $dumpbame-$timedate.zip $dumpbame-$timedate.dmp $bakdbname-$timedate.log

find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.dmp -exec rm -rf {} \;

输出的文件为:

public_ser-20180815125435.dmp

public_ser-20180815125435.log

public_ser-20180815125435.zip

如果自动命名的文件的分隔符用短横线就没有问题,为什么会这样呢。

说明:

shell变量名后面要跟如下内容:非小写字符串(包括大小字符串)、数字或下划线,要么用转义字符“\”或者变量名用大括号。否则就会向本例中shell试图使用filename_作为变量名。除非出现$filename_已经存在的偶然情况,否则该语句不会打印任何内容(为null或空字符串),这就是第一次为什么输出的是文件 20130329的原因。

在shell中,取一个变量值的方法$varname的语法实际上是常用语法${varname}的简写形式,不管是避免歧义,还是增加可读性,变量加大括号都是一个很好的习惯,不要偷懒不加哟。

换成下划线:$ vi /u01/app/bak/bin/public_serbak.sh

#!/bin/sh

export ORACLE_SID=orcl

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH:/sbin/

export  LANG NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'

timedate=$(date +%Y%m%d%H%M%S)

bakdbname=public_ser

bakdbpasswd=123

dumpbame=public_ser

bakdbhome=/u01/app/bak

expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame"_"$timedate.dmp logfile=$bakdbname"_"$timedate.log

cd $bakdbhome

zip -r $dumpbame"_"$timedate.zip $dumpbame"_"$timedate.dmp $bakdbname"_"$timedate.log

find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.dmp -exec rm -rf {} \;

简易的例子:[root@Linux mybash]# a=a

[root@Linux mybash]# b=b

[root@Linux mybash]# echo $a$b

ab

[root@Linux mybash]# echo $a_$b

b

[root@Linux mybash]# echo $a\_$b

a_b

[root@Linux mybash]# echo ${a}_${b}   #推荐方法

a_b

[root@Linux mybash]# echo "$a"_"$b"

a_b

[root@Linux mybash]# echo $a"_"$b

a_b



推荐阅读
  • 关键词:LinuxJDKJRE解决JRE中文乱码解决FireFox不支持appletl 安装JDK1、  安装jdkroot用户进入jdk安装文件所在目录,键入chmoda+xjd ... [详细]
  • 这篇文章主要介绍“大文本数据怎么导入导出到数据库”,在日常操作中,相信很多人在大文本数据怎么导入导出到数据库问题上存在疑惑,小编查阅了各 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • linux js文件怎么打开文件夹路径,js 获取文件本地路径
    1.代码获取文件本地路径选择导入数据源:functionbrowseFolder(){try{varMessage“\u8bf7\u9009\u62e9\u6587\u4ef6\u ... [详细]
  • 用户管理_用户管理的小项目
      之前学习链表数据结构的时候,写过(相信很多人都做过)dos窗口版的学生管理系统,通过输入数字来实现CURD学生的信息,顶多就是把数据写入文件来存储数据 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Linux批量复制并重命名和批量复制文件到多个文件夹的方法
    本文介绍了在Linux系统下批量复制并重命名文件以及批量复制文件到多个文件夹的方法。通过使用模式匹配功能,可以方便地实现文件的批量操作。同时,还提供了有关shell语法中的()和{}的参考资料。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
author-avatar
wuyanting67412
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有