shell script 是一个程序化脚本,使用shell语法跟linux命令完成的一个程序。

注意事项:

  文件开头: #!/bin/bash

  文本以enter符号作为开始执行该行语句,用跳脱符 \enter使命令接着下一行写

  # 号作为批注行

执行脚本:

  首先赋予执行权限:chmod +x filename.sh

  绝对路径执行:/home/../filename.sh

  相对路径执行:./filename.sh

  将filename.sh放在path目录下,直接执行filename.sh

  借用bash执行:bash filename.sh 或者 sh filename.sh

常用操作:

  输出:echo [-ne] 字符串 【说明 -n字符串不自动换行, -e 对一些字符做特殊处理

    如: \a 发出警告声
         \b 删除前一个字符
            \c 最后不加上换行符号
            \f 换行但光标仍旧停留在原来的位置
            \n 换行且光标移至行首
            \r 光标移至行首,但不换行
            \t 插入tab
            \v 与\f相同
            \\ 插入\字符

  退出程序: exit n 【说明 n位数字,常见的为0,可以使用$? 获取这个n值。

  获取屏幕输入信息: read -p 字符串 变量名 【说明 将字符串赋给变量。

  显示日期:$(date +%Y%m%d) 将当前日期格式化为年月日

  条件判断:test

    test -e /filename && echo "exist" || echo "Not exist"

    文件或目录类型判断:

       -e 文件或目录存在

       -f  存在且为文件

         -d 存在且为目录

    文件或目录权限判断:

         -r 文件或目录可读

       -w 文件或目录可写

       -x 文件或目录可执行

       -s 文件或目录存在且为非空

    文件间比较:

       -nt (newer than) 【test file1 -nt file2】

       -ot(older than)

         -ef 相同

    两整数间比较:

       -eq 相等 【test n1 -eq n2】

       -ne 不相等

       -gt 大于

       -lt 小于

       -ge 大于等于

       -le 小于等于

    字符串判断:

       test -z string 字符串为空

       test -n string 字符串非空 【-n可省】

       test str1 == str2

       test str1 != str2

    多条件判断:

       test -r file -a -x file 文件file 同时 拥有 r 和 x 权限 【-a -o !】

  条件判断 [   ]

    eg:[ “test“ == “test“ ],【注意空格键,加单双引号】

  shell 自带变量

    sh filename.sh op1 op2 op3 ,在filename文本中以$0 表示filename,$1 表示op1,$2 表示op2,$3 表示op3,$# 表示参数个数,$@ 表示“$1”“$2”“$3”,$* 表示“$1 $2 $3”

  shift 使命令参数变量号偏移

    假如sh filename op1 op2 op3 op4 在sh文本中

      echo $1   # 显示op1

        shift         #偏移一位

        echo $1   #显示op2

      shift 2      #偏移2位

      echo $1   #显示op4

  条件判断语句

    if [ 条件表达式 ] ; then

      执行语句;

    elif [ 条件表达式 ]; then

      执行语句

    fi

  case 语句

    case $变量名 in

      "第一种变量")

        操作;;

     "第二种变量")

        操作;;

      *)    #不是第一种和第二种的

        操作;;

    esac

  循环

    1.while [ 条件表达式 ]                    2.util [ 条件表达式 ]                      3.for var in con1 con2 con3 【可能的有限的值】

    do  # 循环开始          do                                                  do                         

      程序段             程序段                                      程序段                       

    done  # 循环结束        done             done      

    4.for((i=1;i<10;i++))

     do

        程序段

     done

    说明:在for循环中,可以用$(seq 1 100),或者{1..100} 表示连续的数或者字母,${RANDOM} linux随机数变量。范围[0,32767]

shell script 的调试:

  sh -nvx filename.sh  -n 不执行文件,仅查询语法问题,-v 执行前,先输出文件,-x 将文件内容和输出语句同步输出。

source filename.sh 执行脚本:

  执行该脚本是在父bash中执行的,执行完后,可以直接 echo ${filename.sh中的变量},得到变量值;而sh filename.sh 后,echo不能输出文件中的变量名。

  

shell 脚本入门的更多相关文章

  1. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  2. linux的shell脚本入门

    Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...

  3. (一)shell脚本入门

    shell脚本入门 1.脚本格式 脚本以#!/bin/bash 开头(指定解析器) 2.第一个shell脚本:helloworld (1)需求:创建一个shell脚本,输出helloworld 运行: ...

  4. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  5. 【shell】shell脚本入门

    1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...

  6. Linux入门第五天——shell脚本入门(上)基本概念

    一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...

  7. shell脚本入门及基本元素

    命令和参数 #!/bin/sh 其中#!用来告诉系统它后面的参数是用来执行该文件的程序,必须放在脚本的首行,不然会在执行脚 本 的时候报错.当一个文件开头的两个字符是#!时,内核会扫描其它的部分看是否 ...

  8. Linux Shell 脚本入门

    linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...

  9. Shell脚本入门与应用

    编写第一个shell脚本 如同其他语言一样,通过我们使用任意一种文字编辑器,比如 nedit.kedit.emacs.vi 等来编写我们的 shell 程序.程序必须以下面的行开始(必须方在文件的第一 ...

  10. shell脚本入门

    什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch ...

随机推荐

  1. Windows Store 应用获得设备 ID 的几种方案

    本文为个人博客备份文章,原文地址: http://validvoid.net/solutions-get-device-id-for-uwp/ 通过生成唯一的设备 ID 进行数据统计是应用开发中一个非 ...

  2. maven课程 项目管理利器-maven 3-7 maven依赖范围 2星

    本节主要讲了maven的依赖范围: 在pom.xml   dependency标签的scope中.eclipse中有编译的路径,maven中有编译,运行,测试的路径. 1 scope为test,为测试 ...

  3. SublimeText插件eslint : 语法检测

    参考: http://www.tuicool.com/articles/faANRvj 安装之后的效果: 误用了 = ,在文件保存时就会被提示,直接顺手改掉就行了,方便的不行 步骤1:Sublime集 ...

  4. 栅格那点儿事(四B)---多波段栅格数据的显示

    多波段栅格数据的显示 我上面说了这么多,可能有的人会觉得平时也根本用不上.自然,说起影像数据,大家接触到对多的就是最最常见的航片或卫片.对于这种栅格数据呢,大多数的场景下,都只需实现一个效果,就是最接 ...

  5. 属性动画 常用属性及View常用方法

    View类中,常用于属性动画的属性: translationX and translationY: These properties control where the View is located ...

  6. 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色

    简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging ...

  7. yii2.0安装ElasticSearch及使用

    yii2.0安装ElasticSearch安装及使用教程:https://www.yiichina.com/tutorial/1046 Elasticsearch 权威指南(中文版):https:// ...

  8. Java线程堆栈分析

    不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面.老话说得好,机会是留给有准备的人的,因此,开始计划看一些Java底层一点的东西,尝试开始在学 ...

  9. 使用坚果云+keepass实现网盘密码管理

    准备工作 登录坚果云web版 在主页创建了一个新的同步文件夹AAA(与同步文件夹My Nutstore并列) 设置同步文件夹AAA:勾选“默认不同步到电脑” 把KeePass的数据库文件db.kdbx ...

  10. SINAMICS S120屏蔽报警

    通用的报警屏蔽方法: P2118 = 需要屏蔽的报警号 P2119 = 屏蔽的方式