shell脚本实例

Shell 输入/输出重定向

左心房为你撑大大i 提交于 2020-03-16 08:05:01
大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取 输入。 重定向命令列表如下: 命令 说明 command > file 将输出重定向到file. command < file 将输入重定向到file. n > file 将文件描述符为n的文件重定向到file. n >> file 将文件描述符为n的文件以追加的方式重定向到file. n>&m 将输出文件m和n合并. n<&m     将输入文件m和n合并. <<tag     将开始标记tag和结束标记tag之间的内容作为输入. 需要注意的是文件描述符0通常是标准输入(STDIN),1 是标准输出(STDOUT),2是标准错误输出(STDERR). 输出重定向 重定向一般通过在命令间插入特定的符号来实现,特别的,这些符号的语法如下所示: command > file1 上面这个命令执行command1然后将输出的内容存入file1. 注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符. 实例 执行下面的who命令,他将命令的完整的输出重定向在用户文件中(users): $ who > users 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。

一个不错的shell 脚本教程

China☆狼群 提交于 2020-03-15 09:29:11
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本   Linux中有好多中不 同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。   如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi   等来编写我们的shell程序。   程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh   符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。   当编辑好脚本时,如果要执行该脚本,还必须使其可执行。   要使脚本可执行: chmod +x filename   然后,您可以通过输入: ./filename 来执行您的脚本。 注释   在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量   在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成

转 shell awk 使用详解

此生再无相见时 提交于 2020-03-14 11:30:32
awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows上实现,gawk, awk实现在linux上。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供 了Bell实验室和GNU的一些扩展。下面就对awk进行介绍。 awk使用的基本格式: 1 2 3 # awk [options] 'script' file1 file2, ... # awk [options] 'PATTERN { action }' file1 file2, ..

Ansible-Playbook之初始化服务器

狂风中的少年 提交于 2020-03-14 11:26:26
批量初始化服务器 初始化步骤 配置ssh密钥认证 远程配置主机名 控制远程主机互相添加HOSTS解析 配置远程主机的yum源以及一些软件 时间同步配置 关闭selinux/iptables 修改sshd配置 配置ssh密钥认证 在主控节点的 /etc/ansible/hosts 配置节点 $ vim /etc/ansible/hosts [new] 192.168.56.12 192.168.56.13 在控制节点配置到受控节点的ssh认证方式 # 主控节点执行 $ ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' $ for host in 192.168.56.{11..12};do ssh-keyscan $host >> ~/.ssh/hnow_hosts 2> /dev/null sshpass -p '123456' ssh-copy-id root@$host &> /dev/null done 将上面的方案playbook化: --- - name: config ssh connection hosts: new gather_facts: false tasks: - name: configure ssh connection shell: | ssh-keyscan {{inventory_hostname}} >> ~/

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

shell之打印菜单方法实例

狂风中的少年 提交于 2020-03-11 16:50:49
方法1 #!/bin/bash #Author:mcsiberiawolf #Time:2019-02-12 11:15:49 #Name:menu.sh #Version:V1.0 #Description: This is a test script. RETVAR=0 # 定义脚本路径 path=/server/scripts # 如果路径不存在就创建 [ -d "$path" ] && mkdir -p $path # 定义帮助函数 function Usage(){ echo "Usage:$0 argv" return 1 } # 定义安装服务函数 function InstallService(){ if [ $# -ne 1 ]; then Usage fi local RETVAR=0 echo "start installing ${1}." sleep 2 if [ ! -x "$path/${1}.sh" ]; then echo "$path/${1}.sh does not exist or can not be exec." return 1 else $path/${1}.sh return $RETVAR fi } # 定义主函数 function main(){ # 菜单提示 PS3="`echo Pls input the num you

-Shell 教程 Bash 脚本 基础语法 MD

余生长醉 提交于 2020-03-10 18:03:37
目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 Shell 数组 定义数组 数组的基本操作 Shell 注释 Shell 传递参数 特殊字符处理参数 $* 与 $@ 的异同点 Shell 基本运算符 算术运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符 Shell echo 命令 Shell printf 命令 格式替代符 使用案例 printf 的转义序列 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 Shell 简介 Shell 是一个用 C 语言 编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种 命令语言 ,又是一种 程序设计语言 。 Shell 是指一种 应用程序 ,这个应用程序提供了一个 界面 ,用户通过这个界面访问 操作系统内核的服务 。 Ken Thompson 的 sh 是第一种 Unix Shell, Windows Explorer 是一个典型的 图形界面 Shell 。 Shell 脚本 Shell 脚本

Shell数组追加元素的技巧

你。 提交于 2020-03-08 06:53:37
在shell中,数组是没有追加函数去实现给数组添加新元素的,我们可以利用数组的长度来添加新元素。 一、举个例子: 1.定义一个空数组变量a a=() 2.现在数组变量a的值是空的,添加一个新元素b 方法:数组变量[数组变量长度]=需要添加的元素 数组变量长度= ${#变量名[*]} a[${#a[*]}] =b #添加完毕 3.查看数组变量的值: echo ${a[*]} #输出b 二、应用在脚本的实例: 条件: 1.定义一个变量str=x_y_z 2.将变量str的值中的x,y,z添加到空数组变量arr中 代码如下: #!/bin/bash ## 定义变量 str = "x_y_z" ## 定义空数组 arr = ( ) ## 将str变量拆开分别添加到数组变量arr line = ( $( echo $ { str } | sed 's/_/ /g' ) ) for i in ${line[*]} do arr [ ${#arr[*]} ] = ${i} done echo 数组变量arr的值为: " ${arr[*]} " 脚本输出结果为: 数组变量arr的值为:x y z 来源: CSDN 作者: 绮梦寒宵 链接: https://blog.csdn.net/weixin_44901564/article/details/104552834

利用Shell开发MySQL的启动脚本

随声附和 提交于 2020-03-08 04:24:41
文章目录 1.1 MySQL实例的部署情况 1.2 MySQL实例的启动方式 1.3 MySQL启动脚本的内容 1.1 MySQL实例的部署情况 01:MySQL程序的安装目录为:/mysql/apps/mysql 02:MySQL实例3306的配置文件为:/mysql/data/3306/my.cnf 03:MySQL实例3306的PID文件为:/mysql/data/3306/mysql.pid 04:MySQL实例3306的socket文件为:/mysql/data/3306/mysql.sock 1.2 MySQL实例的启动方式 启动方式:mysqld_safe --defaults-file = /mysql/data/3306/my.cnf > /dev/null 2 > & 1 & 关闭方式:mysqladmin -uroot -p密码 -S /mysql/data/3306/mysql.sock shutdown 1.3 MySQL启动脚本的内容 脚本中有root@localhost用户的密码,请脚本权限设置成700,该脚本只能在操作系统的root用户下执行(脚本进行了限制 ) #!/bin/bash # # # Define variables RETVAL = 0 Port = 3306 User = root Pass = chenliang Pid =

Shell脚本入门-7

百般思念 提交于 2020-02-29 09:01:59
Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似, 都是用于字符串的输出 。命令格式:echo string 您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test" ,这里的双引号完全可以省略, 以下命令与上面实例效果一致:echo It is a test 2.显示转义字符 : echo "\"It is a test\"" , 结果将是:"It is a test" , 同样,双引号也可以省略。 备注: \" \": 转移一对""符号。 3.显示变量: read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 #!/bin/sh read name echo "$name It is a test" 以上代码保存为 test.sh,name 接收标准输入的变量,结果将是: [root@www ~]# sh test.sh OK #标准输入 OK It is a test #输出 4.显示换行:注意: echo -e echo -e "OK! \n" # -e 开启转义 echo "It it a test" 输出结果: OK! -- 备注:(有一空行) It it a test 5.显示不换行: 注意: echo -e #!/bin/sh echo -e