shell脚本

shell脚本编程

偶尔善良 提交于 2019-12-04 15:38:44
一、 Shell 中的变量   任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识。 1 、默认变量 $0 当前脚本名称 $1 脚本接收的第一个参数 $2 脚本接收的第二个参数 $# 脚本接收的所有参数个数 $@ 脚本接收的所有参数 $* 脚本接收的所有参数 $? 前一行命令的执行状态 2 、变量定义及赋值 赋值处必须为一个整体,不能有空格。想要包含空格,需要用单引号或双引号包围。单引号 ( ' ) 和双引号 ( " ) 的区别:单引号中保持原样输出。而双引号中会替换成其变量值。 3 、 ` 符号 在该符号中的命令会被执行。可以用 $() 替换 4 、命令行交互 read    read 命令的使用形式为 read [-pt] variable   参数 p :后面可以接提示符   参数 t :后面可以接秒数 5 、定义变量类型 declare   默认情况下,变量的赋值内容都是字符类型的。    declare 命令的使用形式如下: declare [-aixr] variable   参数 a :将 variable 定义为数组   参数 i :将 variable 定义为整型 (integer)   参数 x :将 variable 设置成环境变量,类似于 export 的作用   参数 r : variable 为 readonly 类型,值不能被更改 二、

初学shell

﹥>﹥吖頭↗ 提交于 2019-12-04 15:21:37
一、 shell 简介 shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 二、shell 基本常识 shell 脚本名称命名一般为英文的大写、小写; 不能使用特殊的符号、空格来命名; shell 脚本后缀以 .sh 结尾; shell 脚本内容首行需以 # ! /bin/bash 开头; shell 脚本中变量名称尽量使用大写字母,字母之间不能使用“ - ”,可以使用“ _ ” ; shell 脚本变量名称不能以数字、特殊符号开头。 环境变量 export name// 使变量 name 变为环境变量 unset name// 取消环境变量的设定 三、shell 脚本 在终端使用 “ vim ”命令进入文本编辑器,新建一个文件 tssh.sh 。 chmod +x ./test.sh # 是脚本具有执行权限 ./test.sh # 执行脚本 /bin/sh test.sh # 直接运行解释器 算数运算符 + 加法 - 减法 * 乘法 / 除法 % 取余 = 赋值 == 相等 ! = 不相等 流程控制 ① if if condition then 程序段 f1 ② if else if condition

shell 编程之正则表达式三剑客与文件处理器

不羁岁月 提交于 2019-12-04 15:06:30
前言: 基础正则表达式 扩展正则表达式 sed工具使用方法 awk工具使用方法 一 : 正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断、循环等语句编辑 Shell 脚本。接下来我们将开始介绍一个很重要的概念——正则表达式(RegularExpression,RE)。 正则表达式是一个工具 1.1 正则表达式概述 下面先来了解一下正则表达式的定义及用途。 1.2 正则表达式的定义 正则表达式又称正规表达式、常规表达式。在代码中常简写为 regex、regexp 或 RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说, 是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。 正则表达式是由普通字符与元字符组成的文字模式。模式用于描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。其中普通字符包括大小写字母、数字、标点符号及一些其他符号,元字符则是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 正则表达式一般用于脚本编程与文本编辑器中。很多文本处理器与程序设计语言均支持正则表达式,如前面提到的 Perl、Linux 系统中常见的文本处理器(grep、egrep、sed、awk)

Shell学习记录(持续更新)

大兔子大兔子 提交于 2019-12-04 14:11:24
一、shell定时备份数据库任务通用脚本 目标:根据定时任务启动脚本,执行数据库备份任务,按照日期进行每日备份,如已经备份则脚本停止,备份任务完成后将结果发送邮件提醒 1.执行数据库备份任务,按照日期进行每日备份,如已经备份则脚本停止 #!/bin/bash #auto backup mysql db #by xiamiGG 2019-11-15 #define bacakup path BAK_DIR=/data/backup/`date +%Y%m%d` #备份路径,备份名称按照年月日编排 MYSQLDB=example #备份数据库文件的名称 MYSQLUSR=backup #数据库用户名 MYSQLPW=123456 #数据库密码 MYSQLCMD=/usr/bin/mysqldump #mysqldump命令路径 #必须使用root管理员账户执行脚本,否则退出脚本 if [ $UID -ne 0 ];then echo "must to be use root for exec shell." exit fi #判断目录是否存在,如果已经存在则提示备份已经完成,停止脚本并退出;如果没有进行备份则按日期创建目录 if [ ! -d $BAK_DIR ];then mkdir -p $BAK_DIR echo -e "\033[32mThe $BAK_DIR Create

在Unix系统中执行可执行文件

耗尽温柔 提交于 2019-12-04 12:23:41
  这篇文章是我在一个叫做Charlotte数据挖掘的公众号上看到的文章,文首提到转载自"朱小厮的博客",当我今天执行一个自己编译的可执行文件后的运行阶段想到了这篇文章,直接一次成功。非常感谢这篇文章。现在记录下来,仅供学习。 在Linux中,我们执行内置命令时,直接输入命令名称即可,如: $ mv a b #将a重命名为b 而在执行自己写好的程序时,却要带上./,例如: $ hellohello: command not found$ ./hellohello world 这是为什么呢?它们有什么区别呢? shell是如何运行程序的 在说明清楚问题之前,我们必须了解shell是如何运行程序的。首先我们必须要清楚的是,执行一条Linux命令,本质是在运行一个程序,如执行ls命令,它执行的是ls程序。那么在shell中输入一条命令,到底发生了什么?它会经历哪几个查找过程? alias中查找 alias命令可用来设置命令别名,而单独输入alias可以查看到已设置的别名: $ aliasalias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls=

Python和Shell交互工具 ShellPy

与世无争的帅哥 提交于 2019-12-04 11:39:26
ShellPy 是一款Python和Shell的交互工具。一般来说,我们会通过Subprocess、Popen或者Command模块执行一条Shell命令或脚本,然后通过返回的标准输出和错误输出来得到结果,这个可行但不直观。ShellPy直观的解决了这一问题。 shellpy的主体是Python,总体的编码和Python是一样的,想要嵌入Shell命令的时候,在命令前面加一个 ` (Tab上面那个键,一个右点号)。例如 `ls -l` 或者 `ls -l 也支持多行命令 echo test > test.txt cat test.txt 长命令 `echo This is \ a very long \ line 也可以把返回结果赋值给一个变量 result = `ls -l 输出一个命令的返回码 result = `ls -l print result.returncode 获取标准输入输出文本 result = `ls -l result_text = result.stdout result_error = result.stderr 逐行遍历文本 result = `ls -l for line in result: print line.upper() 来源: https://www.cnblogs.com/1994jinnan/p/11859200.html

Windows下Linux虚拟机的配置以及Win10 linux子系统开启

时光怂恿深爱的人放手 提交于 2019-12-04 11:05:02
本文所用资料下载地址为: 链接: http://pan.baidu.com/s/1eSkjKkU 密码:x8eg 更新:评论区反映可能高版本的win10不适用于这种子系统的安装方法,建议找一些更新的教程,由于最近没有使用win10,不方便测试,带来的不便请谅解! 一、前言 想要在一台windows电脑使用linux现在有3种方法,1.安装linux与windows双系统 2.使用virtualbox等工具安装linux的虚拟机 3.开启win10内置的linux 1.第一种方法能够体验最纯粹的linux操作系统,能够积累很多服务器的管理经验,但是我并不推荐大家选择这种方式,因为在linux中使用者能够轻易地获得(superuser)root权限,可以直接对系统文件进行修改,容易因为一个命令的执行错误导致系统崩溃,难以逆转的数据损坏等问题 2.安装虚拟机使用linux,虚拟机与物理机对应,是以软件的方式在电脑上虚拟出一个机器,在这个虚拟系统中完全不会影响到真实系统的运行,即使遭遇到严重的损坏最多也不过是把虚拟机删除了… 但是由于要用软件虚拟出一个机器,会占用 更大的内存 ,推荐 至少4G内存以上的电脑 选择这种方式。 3.Win10系统在一周年更新(版本号大于14316)中内置了一个小型的ubuntu(linux的一个发行版,其他的具体发行版本不再赘述)

shell脚本

谁说胖子不能爱 提交于 2019-12-04 10:24:15
1.n的阶乘。 #! # f() { if [ $1 -lt 1 ];then echo 1 else i=$[$1*$(f $[$1-1])] echo $i fi } f 5 2.斐波那契函数。(1,1,2,3,5,8,13,21,34,55....) #!/bin/bash # fact() { if [ $1 -lt 3 ];then echo 1 else i=$[$(fact $[$1-1])+ $(fact $[$1-2])] echo $i fi } fact 8 来源: https://www.cnblogs.com/COO-zsy/p/11589522.html

一键发布shell脚本

时光总嘲笑我的痴心妄想 提交于 2019-12-04 09:01:37
1.配置集群间免密登录 (1)配置host:vim /etc/hosts (2)生成公钥 :ssh-keygen -t rsa -P ''   这时会提示生成的公钥的存放地址,直接回车,公钥生成成功 (3)cat id_rsa.pub 将生成的公钥添加到需要登录的机器的authorized_keys文件里 然后直接ssh crawler01即可登录 2.一键启动脚本 1 #!/bin/bash 2 3 #程序包名称 4 ZIP_NAME="aikucun-distributed-spider-crawler.zip" 5 6 zip_exist(){ 7 if [ ! -f "$ZIP_NAME" ] 8 then 9 return 1 10 else 11 return 0 12 fi 13 } 14 15 backup(){ 16 echo "备份方法执行..." 17 cd ~/crawler 18 if zip_exist; then 19 mv $ZIP_NAME ~/jar_bak 20 echo "crawler程序包备份完成!" 21 else 22 echo "$ZIP_NAME 不存在,无法备份,请检查!" 23 fi 24 } 25 26 check_single(){ 27 if [ ! -f "bin/single.sh" ] 28 then 29

shell 第二天

空扰寡人 提交于 2019-12-04 08:59:48
任务 6.管道符和作业控制 7.Shell变量上 8.Shell变量下 9.环境变量配置环境 管道符“|”: 作用:就是把前面命令的输出结果交到后面的命令 [root@localhost ~]# cat /etc/passwd | wc -l #统计passwd下有多少行 20 [root@localhost ~]# cat /etc/passwd | grep root #grep 过滤指定的命令或者词 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 作业控制: 1. ctrl z: 暂停一个任务 [root@localhost ~]# vim tk.sh #编辑这个文件后按CTRL+z [1]+ Stopped vim tk.sh [root@localhost ~]# jobs #查看编辑文件的状态 [1]+ Stopped vim tk.sh 2. jobs查看后台的任务 [root@localhost ~]# jobs [1] Stopped vim tk.sh [2]- Stopped vim hh.sh 3. bg[id]把任务调到后台并运行 [root@localhost ~]# jobs [1] Stopped vim tk.sh [2]+ Stopped