shell脚本

Linux Bash语法总结

喜欢而已 提交于 2020-02-04 12:05:46
在学习Linux的过程中,无可避免的会碰到一个既让人喜欢、又令人十分头疼的神奇的东西——bash编程,也就是shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于windows中的批处理文件。本篇博文主要介绍bash编程的基础语法讲解。 一、bash编程之变量 1)bash变量类别 本地变量:只对当前shelll进程有效的变量,对其他shell进程无效,包含当前shell进程的子进程。 2)变量赋值: 即向变量的存储空间保存数据,如下 [root@localhost ~]# VAR_NAME=VALUE 3)变量的引用 格式为:${VAR_NAME} " ":弱引用,里面的变量会被替换; ' ':强引用,里面的所有字符都是字面量,直接输出,所见即所得; 4)环境变量 对当前shell进程及其子shell有效,对其他的shell进程无效! 定义:VAR_NAME=VALUE 导出:export VAR_NAME 撤销变量:unset VAR_NAME 只读变量:readonly VAR_NAME 5)局部变量 在shell脚本中定义,只可以在shell脚本中使用! 6)位置变量 $1,$2...,${10} 7)特殊变量 shell对一些参数做特殊处理

shell之定义变量

*爱你&永不变心* 提交于 2020-02-03 00:36:48
变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。 这意味着,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。例如在C语言或者 C++ 中,变量分为整数、小数、字符串、布尔等多种类型。 当然,如果有必要,你也可以使用 Shell declare 关键字显式定义变量的类型,但在一般情况下没有这个需求,Shell 开发者在编写代码时自行注意值的类型即可 declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性。不过 typeset 已经被弃用了,建议使用 declare 代替 1. 两个声明变量的示例 (1)将变量声明为整数并进行计算 [root@server1 declare]# cat 1.sh #!/bin/bash declare -i m n ret #将多个变量声明为整数 m=10 n=30 ret=$m+$n echo $ret (2)将变量定义为只读变量 [root@server1 declare]# declare -r

shell编程之条件语句

走远了吗. 提交于 2020-02-02 04:07:47
Shell编程之条件语句 文件测试 文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exist) -f 测试是否为文件(File) -r 测试当前用户是否有权限读取(Read) -w 测试当前用户是否有权限写入(Write) -x 测试是否设置有可执行(Excute)权限 举例:判断/mnt/cdrom目录是否存在? # test -e /mnt/cdrom # echo $? 0 test命令中用于判断文件的选项有很多,从文件个数上可分为单个文件的判断和两个文件之间的比较。其中判断单个文件最常用的选项就-f选项,在比较两个文件时,常用的选项有: -nt 判断文件A是否比文件B新 -ot 判断文件A是否比文件B旧 -ef 判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode 举例: #touch a #touch b #test a -ot b&&echo “YES” || echo “NO” #[ a -ot b ]&&echo “YES” || echo “NO” #test a -ef b &&echo “YES” || echo “NO” #ln a c #test

使用cat命令输出大段字符

混江龙づ霸主 提交于 2020-02-02 02:30:33
Shell中EOF说明: Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。 可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。 回顾一下<<的用法。当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。 cat命令: Concatenate FILE(s), or standard input, to standard output. //将文件或者标准输入,输出到标准输出 示例脚本如下: root@localhost ~]# cat test3.sh #!/bin/bash dir="/root" if [ -d $dir ];then cat<<EOF this is a test. directory $dir exists. this is the third line. EOF fi [root@localhost ~]# [root@localhost ~]# ./test3.sh this is a test. directory /root exists. this is the third line. 来源: CSDN 作者:

Shell learning

和自甴很熟 提交于 2020-02-01 17:51:05
Before I mostly read vbird to learn Shell of Linux. It’s good for chinese to learn shell. Shell commands is too many. So the collection of them continues in this post. grep 1. ps -ef | grep -E 'a|b' 2. ps -ef | grep 'a|b' 3. ps -ef | egrep 'a|b' xargs echo file | xargs -i cp {} <path> 用{}代替管道的输入 echo file | xargs -I {} cp {} <path> 定义{}符号,用来代替管道的输入。 cp --parents 连同目录结构一起复制 sed sed -i s/old/new/g `grep -r old *` 替换所有包含old文件中的old 为 new if if …; then … elif …; then … else … fi [ -f "$file" ] 判断$file是否是一个文件 [ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于 [ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性

ZooKeeper的shell操作命令

﹥>﹥吖頭↗ 提交于 2020-02-01 03:53:47
ZooKeeper的shell操作命令 使用 zkServer.sh 启动ZooKeeper服务器后,接下来就可以使用 zkCli.sh 脚本启动ZooKeeper客户端来连接ZooKeeper服务器;Windows对应的是 zkServer.cmd 和 zkCli.cmd 。 (1)使用 help 命令可查看ZooKeeper的shell操作可用的命令,如下: [ zk: localhost:2181 ( CONNECTED ) 4 ] help ZooKeeper -server host:port cmd args stat path [ watch ] set path data [ version ] ls path [ watch ] delquota [ -n | -b ] path ls2 path [ watch ] setAcl path acl setquota -n | -b val path history redo cmdno printwatches on | off delete path [ version ] sync path listquota path rmr path get path [ watch ] create [ -s ] [ -e ] path data acl addauth scheme auth quit getAcl

SpringBoot2.x应用启动、关闭shell脚本

孤街浪徒 提交于 2020-02-01 03:37:31
本篇主要说明以下内容: 1.SpringBoot2.x应用启动、关闭的shell脚本 1 启动脚本 直接放到同jar包同一个目录下,如下: #!/usr/bin/env bash APPLICATION_NAME='spblearn' CURRENT_PATH=`pwd` PID="" if [ -f ${CURRENT_PATH}/logs/${APPLICATION_NAME}.pid ] then PID=`cat ${CURRENT_PATH}/logs/${APPLICATION_NAME}.pid` fi if [ "${PID}" = "" ] then echo "start "${APPLICATION_NAME} else echo "kill -9 "${APPLICATION} kill -9 ${PID} echo "restart "${APPLICATION_NAME} fi if [ -d `pwd`/logs ] then rm -rf `pwd`/logs fi mkdir logs if [ x$1 != x ] then java -jar -Duser.timezone=GMT+08 ${APPLICATION_NAME}.jar --spring.profiles.active=prod --server.port=$1 > `pwd`

shell 脚本查看RX TX

为君一笑 提交于 2020-02-01 03:36:29
#!/bin/bash while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}') TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}') sleep 1 RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}') TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}') clear echo -e "\t RX `date +%k:%M:%S` TX" RX=$((RXnext-RXpre)) TX=$((TXnext-TXpre)) if [[ $RX -lt 1024 ]];then RX="${RX}B/s" elif [[ $RX -gt 1048576 ]];then RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}') else RX=$(echo $RX | awk '{print $1/1024 "KB/s"}') fi if [[ $TX -lt

32. Bash Shell - 启动时加载文件

拥有回忆 提交于 2020-01-31 12:08:39
开篇词 Bash 的启动配置文件可以帮我们预加载一些其他脚本文件并预设常见以及必要的变量。 Bash 提供了两类启动文件,一类是登录时加载,另一类是非登陆加载。 登陆 Shell 启动文件 登录时加载的启动文件有: 全局启动文件 cat /etc/profile # 全局启动文件,Debian(Ubuntu) 以及 Redhat(CentOS) 分发版 特定用户启动文件 cat ~/.bash_profile # RedHat(CentOS)分发版 cat ~/.profile # Debian(Ubuntu) 分发版 cat ~/.bash_login # Debian(Ubuntu) 以及 RedHat(CentOS) 分发版 非登陆 Shell 启动文件 启动文件将会在用户进入 Bash Shell 时加载: cat /etc/bashrc # Redhat(CentOS) 分发版 cat ~/.bashrc # Debian(Ubuntu) 与 RedHat(CentOS) 分发版 我所撰写的英文版本 32. Bash Shell - Startup Files 引用 6 Bash 特性 6.2 Bash 启动文件 参见 想看手册的其他内容?请访问该手册的所属专栏:《 Linux 管理员手册:既简单又深刻 》 来源: CSDN 作者: Snow Hide 链接: https

shell一文入门通

北战南征 提交于 2020-01-31 09:03:54
简单来说“Shell编程就是对一堆Linux命令的逻辑化处理”。 W3Cschool 上的一篇文章是这样介绍 Shell的 hello world 学习任何一门编程语言第一件事就是输出HelloWord了!下面我会从新建文件到shell代码编写来说下Shell 编程如何输出Hello World。 (1)新建一个文件 helloworld.sh : touch helloworld.sh ,扩展名为 sh(sh代表Shell)(扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了) (2) 使脚本具有执行权限: chmod +x helloworld.sh (3) 使用 vim 命令修改helloworld.sh文件: vim helloworld.sh (vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)) helloworld.sh 内容如下: #!/bin/bash #第一个shell小程序,echo 是linux中的输出命令。 echo "helloworld!" shell中 # 符号表示注释。 shell 的第一行比较特殊,一般都会以