shell脚本

shell脚本编程-循环(for、while、until)

試著忘記壹切 提交于 2019-12-17 19:59:59
for命令格式: – list参数:迭代中要用的一系列值 – 每个迭代中,变量var会包含列表中的当前值 – do和done语句之间输入的命令可以是一条或多条标准的bash shell命令 1 2 3 4 for var in list do commands done 读取列表中的值 for命令最基本的用法就是遍历for命令自身中定义的一系列值: 在最后一次迭代后,$test变量的值会在shell脚本的剩余部分一直保持有效,除非修改它 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $cat test #!/bin/bash for test in Alabama Alaska Arizona Arkansas California Colorado do echo The next state is $test done echo "The last state we visited was $test" test = Connecticut echo "Wait , now we're visiting was $test" $ . / test The next state is Alabama The next state is Alaska . . . The last state we visited was Colorado wait ,

CentOS7安装gitlab中文版

笑着哭i 提交于 2019-12-17 18:42:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.安装软件包及解决依赖项 yum groupinstall "Development tools" yum install gcc autoconf cmake unzip vim libcurl-devel zlib-devel curl-devel expat-devel gettext-devel openssl-devel perl-devel nodejs libicu-devel wget curl 安装git 如果已经用yum安装过git,并且版本低于2.7.4,要先卸载掉旧的版本 yum remove git 使用源码编译安装git mkdir /tmp/git && cd /tmp/git curl -O --progress https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz tar -xzf git-2.10.0.tar.gz cd git-2.10.0 ./configure make prefix=/usr/local all # 安装到/usr/local/bin make prefix=/usr/local install # 验证git版本号 git --version #查看git安装路径 which

Shell(六):输入/输出重定向

*爱你&永不变心* 提交于 2019-12-17 17:02:05
重定向的作用是将命令的执行结果输出到指定的文件中。 重定向命令列表如下: 文件描述符 0 通常是标准输入(STDIN), 1 是标准输出(STDOUT), 2 是标准错误输出(STDERR)。 1、输出重定向 将输出重定向到file示例: 注意,任何file1内的已经存在的内容将被新内容替代,更改file1,再次重定向: 如果要将新内容添加在文件末尾,需要使用>>操作符: 2、输入重定向 注意:上面两个例子的结果不同:第一个例子,会输出文件名;第二个不会,因为它仅仅知道从标准输入读取内容。 重定向输入和输出可以同时使用: 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。 默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。 如果希望 stderr 重定向到 file,可以这样写: $ command 2> file 如果希望 stderr 追加到 file 文件末尾

bash初识,shell的基础语法及基本特性

强颜欢笑 提交于 2019-12-17 16:45:27
1.1 bash初识 1.1.1 什么是bash shell 是一个命令解释器,负责用户程序与内核进行交互操作的一种接口, 将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。 1.1.2 bash shell的作用 文件管理 用户管理 权限管理 磁盘管理 网络管理 软件管理 应用管理 ...管理 1.1.3 bash两种使用方式 1) 命令:效率低,适合少量工作 2) 脚本:效率高,适合大量工作 1.1.4 命令提示符 [root @ centos7 ~ ] # :超级管理员 [oldboy @ centos7 ~ ] $ :普通用户 当前登录的用户 主机名 当前目录的位置 1.2 shell的基础语法 1.2.1 命令 选项 参数 command [-options] [arguments] 中括号 可有可无 查看当前登录的用户 [root@oldboy ~]# whoami Root 第一个命令 echo:所见即所得,输出echo后面参数内容,在bash shell中调用变量$ -e :识别换行符等特殊符号 :转义符 $ :调用变量 echo 'zls': [root@oldboy ~]# echo "zls" Zls echo -e 'zls\n123': [root@oldboy ~]# echo -e "zls\n123" zls 123 1.3

Linux——shell脚本编程

青春壹個敷衍的年華 提交于 2019-12-17 16:17:56
基本语法 书写+执行脚本 书写最简单的脚本:02.sh #! /bin/sh cd .. ls 执行脚本: chmod a+x 02.sh # 为02.sh添加执行功能 ./02.sh 或 bash 02.sh  # 以这种方式执行不需要02.sh文件具有可执行权限 Shell会fork一个子进程并调用exec执行./test.sh这个程序,exec系统调用应该把子进程的代码段替换成./02.sh程序的代码段,并从它的_start开始执行。然而test.sh是个文本文件,根本没有代码段和_start函数,怎么办呢?其实exec还有另外一种机制,如果要执行的是一个文本文件,并且第一行用Shebang指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释器的_start开始执行,而这个文本文件被当作命令行参数传给解释器。因此,执行上述脚本相当于执行程序。 将命令行下输入的命令用()括号括起来,也会fork出一个子Shell执行小括号中的命令,一行中可以输入由分号;隔开的多个命令,比如: # (cd ..;ls -l) 如果想要在当前进程下执行shell文件,可使用source或.命令 # source ./02.sh# . ./02.sh 变量 按照惯例,Shell变量由全大写字母加下划线组成,有两种类型的Shell变量: 1.环境变量 env/printenv命令

Shell学习笔记

江枫思渺然 提交于 2019-12-17 09:29:04
█开始行 shell程序必须以下面的行开始(必须方在文件的第一行) #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序 █可执行 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行:chmod +x filename █管道 (|): 将一个命令的输出作为另外一个命令的输入。 █重定向: 将命令的结果输出到文件,而不是标准输出(屏幕)。 > 写入文件并覆盖旧文件 >> 加到文件的尾部,保留旧文件内容 █双引号与单引号 双引号的特殊字符可以保有变量的特性,但是单引号内的特殊字符则仅为一般字符。 #name="$LOGNAME is hh" //root is hh #name='$LOGNAME is hh' //$LOGNAME is hh 通常大写字符为系统预设变量,自行设定的变量可以使用小写字符 █取消变量: 用unset 变量名 █Shell特殊变量 $0 :执行的脚本的文件名 $1 :脚本文件的第一个参数名 $# :传递到脚本的参数个数 $* :以一个单字符串显示所有向脚本传递的参数 $$ :脚本运行的当前进程ID号 $? :显示最后命令的退出状态,0表示没有错误,其它值表示有错误 █常用shell内嵌命令: (1)echo:显示变量内容 (2)env:显示目前系统中主要的预设变量内容 (3)set:显示目前系统中全部的变量内容

shell脚本传可选参数 getopts 和 getopt的方法

蓝咒 提交于 2019-12-17 05:36:36
写了一个shell脚本,需要向shell脚本中传参数供脚本使用,达到的效果是传的参数可以是可选参数 下面是一个常规化的shell脚本:         echo "执行的文件名为: $0";         echo "第一个参数名为: $1";         echo "第二个参数名为: $2" 正常的向shell脚本中传参数的方法为: ./test.sh 1 2 3 最后执行的结果为:         执行的文件名为: ./test.sh         第一个参数名为: 1         第二个参数名为: 2 但是这个是只能按照顺序传递参数,并且不能传递可选参数,然后查资料,发现了一个shell的getopts 用法 首先贴个例子 [hello@Git shell]$ bash test.sh -a hello this is -a the arg is ! hello [hello@Git shell]$ more test.sh #!/bin/bash while getopts "a:" opt; do case $opt in a) echo "this is -a the arg is ! $OPTARG" ;; \?) echo "Invalid option: -$OPTARG" ;; esac done getopts一共有两个参数,第一个是-a这样的选项

shell脚本中用到的计算

陌路散爱 提交于 2019-12-17 03:34:13
  在shell脚本中计算一般会涉及到let、$(())、$[]、bc(另扩展expr)。 其中let、$(())、$[]都是用来做基本整数运算,bc可以用来做浮点运算 。 (1).let、$(())、$[]   因为这三个基本等价,所以放在一起说明。   首先来看下let命令 [xf@xuexi ~]$ num=10 [xf@xuexi ~]$ echo $num 10 [xf@xuexi ~]$ let num=$num+6;echo $num 16 [xf@xuexi ~]$ let num=num-6;echo $num  //let命令中等号右边可以没有美元符号 10 [xf@xuexi ~]$ let num+=6;echo $num  //+=、-=、*=、/=分别是自加、自减、自乘、自除 16 [xf@xuexi ~]$ let num-=6;echo $num 10   再看$(()) [xf@xuexi ~]$ num=10 [xf@xuexi ~]$ echo $num 10 [xf@xuexi ~]$ num=$((num+6));echo $num  //也可以num=$((num+=6)) 16 [xf@xuexi ~]$ num=$((num-6));echo $num 10   最后看$[] [xf@xuexi ~]$ num=10 [xf

Shell 参数(2) --解析命令行参数工具:getopts/getopt

安稳与你 提交于 2019-12-17 03:32:32
getopt 与 getopts 都是 Bash 中用来获取与分析命令行参数的工具,常用在 Shell 脚本中被用来分析脚本参数。 两者的比较 (1)getopts 是 Shell 内建命令,getopt 是一个独立外部工具 (2)getopts 使用语法简单,getopt 使用语法较复杂 (3)getopts 不支持长参数(如: --option ),getopt 支持 (4)getopts 不会重排所有参数的顺序,getopt 会重排参数顺序(这里的区别下面会说明) (5)getopts 出现的目的是为了代替 getopt 较快捷的执行参数分析工作 1 getopts #!/bin/bash while getopts 'd:Dm:f:t:' OPT; do case $OPT in d) DEL_DAYS="$OPTARG";; D) DEL_ORIGINAL='yes';; f) DIR_FROM="$OPTARG";; m) MAILDIR_NAME="$OPTARG";; t) DIR_TO="$OPTARG";; ?) echo "Usage: `basename $0` [options] filename" esac done shift $(($OPTIND - 1))    getopts后面的字符串就是可以使用的选项列表,每个字母代表一个选项,后面带

linux Shell学习笔记第一天

偶尔善良 提交于 2019-12-17 02:47:26
以下是Shell学习1-2天学习笔记 ————————-我是分隔符————————— 硬件去执行, 内核与硬件之间进行操作。 命令解析器。 shell脚本的组成元素 系统命令 文本处理工具(sort、grep、sed、awk…) 变量 条件判断 环循结构 函数 Shell Scripts Center(SSC) ———————————————————————————- 非负Grep / awk 几天。 统计Wc Sort 排序 sort|head / sed 字段处理 awk 数据区域判断 awk |wc 显示文本: echo [选项] 文本 -n 不要自动换行 -e 解析转义符 a 发出警告音 c 最后不加上换行符号 f 换行 r 回车 彩色文本 Echo –e “33[40;35m….]” echo “Hello,world” echo –e “33[40;35mHell,world33[0m" sort [选项]输入文件 -o 输出文件 -d 按字典顺序排序 a-z -n 按数字大小输出 0-9 -r 逆序输出 z-a 9-0 -k 指定分类是域上的数字分类 -t 域分割符;用非空格或tab键分割域 more /etc/passwd 分页显示 sort –d /etc/passwd|more 中间的|是反倒符号。 将前面处理的交给后面处理 先排序。后分页显示 sort –k3