Shell 脚本入门--上

大家好!今天分享的是一些shell脚本的基础知识,分篇为大家介绍,本篇介绍内容有:变量(分类、赋值、查询、引用)、算数运算的实现。

shell脚本简介  

  计算机高级语言分为两种类型,一种是面向对象型(如java、c#)、一种是面向过程型(如shell、python)。性质上的区别在于面向对象型试用于大型复杂的环境,可以更加精确细致的提供服务,缺点就是语法结构繁琐且严谨。而面向过程的语言,简单便捷好上手,但是不适用于复杂的环境。打个比方:现在有个大型的机械项目,一位经验丰富的老设计师,带着几位年轻的工程师。老设计师负责把这个项目划分多份分发给那几位工程师,并把需求告知,由工程师来操作实现。老设计师负责分工,工程师负责具体实现。老设计师把要求和思路与工程师交流,这就是面向对象的过程。而工程师接到分发的任务,就会着手去具体实现,这是面向过程。

  我们接下来介绍的shell脚本,就属于面向过程的。常用来简化运维操作,实现一些简单的条件判断、循环等等

  1、变量:用来存储一些数据,方便管理

    (1)变量的分类

        本地变量:仅对当前SHELL有效,对子SHELL也无效

        环境变量:对当前SHELL及其子SHELL均有效。

        位置变量:在脚本代码中调用通过命令行传递给脚本的参数

     (2)变量的赋值

        arname=value

        export varname

        export varname=value 声明一环境变量,并赋值

        declare -x varname=value 声明一环境变量,并赋值

     (3)变量的查询

        本地变量的查询: set (即查本地,也查环境)

        环境变量的查询:

            env

                printenv

                export

                declare -x

    (4)变量的引用

        

        $varname

        "$varname"

        ${varname} 变量后紧跟字符时,常用这种方法来圈定变量的范围

        当变量值当中包含换行符,如果希望引用出的值同样包含换行符,只能使用"$varname"

    (5)删除变量

        unset varname

  2、位置变量:在脚本代码中调用通过命令行传递给脚本的参数

        $1, $2, ...:对应第1、第2等参数,shift [n]换位置

        $0: 命令本身

        $*: 传递给脚本的所有参数,全部参数合为一个字符串

        [email protected]: 传递给脚本的所有参数,每个参数为独立字符串

        $#: 传递给脚本的参数的个数

        [email protected] $* 只在被双引号包起来的时候才会有差异

        set -- 清空所有位置变量

  3、bash中的算术运算:help let

    +, -, *, /, %取模(取余), **(乘方)在bc当中乘方是^

    实现算术运算:

            (1) let var=算术表达式

            (2) var=$[算术表达式]

            (3) var=$((算术表达式))

            (4) var=$(expr arg1 arg2 arg3 ...) 乘法时要转译* ,即\*

            (5) declare –i var = 数值

            (6) echo ‘算术表达式’ | bc

    

  

练习:

1、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

[[email protected] bin]#vim sumid.sh

    #!/bin/bash

    U10=`cat -n /etc/passwd |grep "^[[:space:]]\+10" |cut -d: -f3`

    U20=`cat -n /etc/passwd |grep "^[[:space:]]\+20" |cut -d: -f3`

    sumid=$[$U10+$U20]

    echo U10:$U10

    echo U20:$U20

    echo $sumid

2、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和?

[[email protected] bin]#vim sumspace.sh

        #!/bin/bash

        SumSpace01=`cat $1 |grep ^$ |wc -l`

        SumSpace02=`cat $2 |grep ^$ |wc -l`

        echo File01Space01:$SumSpace01

        echo File01Space01:$SumSpace02

        echo sumspace:`echo $SumSpace01+$SumSpace02 |bc`

时间: 2025-01-02 01:21:13

Shell 脚本入门--上的相关文章

Shell 脚本入门--下

Shell 脚本入门--下 本为大家介绍,本篇介绍内容有:逻辑运算符(& .| .!.^).测试命令.脚本的执行过程 1.逻辑运算符 (1)&与和&&短路与 True .false 1       0 与: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 对于&来说,如果左侧条件为false,也会计算右侧条件的值.特点只要有一个false就认为是false 短路与: false && =

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [[email protected] ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [[email protected] ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符.与 -f 一起使用: -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c :以字符 (

Shell脚本入门到深入教程:快速入门

本篇是快速入门教程,后面的文章再对相关内容进行深入. Shell脚本基础入门 Bash注释 Bash只支持单行注释,使用#开头的都被当作注释语句: # 整行注释 echo hello world # 行尾注释 通过Bash的一些特性,可以取巧实现多行注释: : ' 注释1 注释2 ' : <<'EOF' 注释1 注释2 EOF ____=' 注释1 注释2 ' 但是,别闲的蛋疼去用取巧的多行注释,安心用#来注释. Bash基本数据类型 Bash中基本数据类型只有字符串类型,连数值类型都没有(d

shell脚本入门-符号篇

一.shell简介 shell的作用是解释执行用户的命令,用户输入一条命令,shell就执行一条,这种方式称为交互式,shell还有一种执行命令的方式是批处理,用户事先写一个shell脚本,让shell一次把所有命令一次执行完. 二.shell执行脚本 shell脚本用#表示注释,但在第一行时例外,这个时候表示该脚本使用后面指定的解释器/bin/sh解释执行.shell脚本运行原理: 交互Shell(bash)fork/exec一个子Shell(sh)用于执行脚本,父进程bash等待子进程sh终

shell脚本入门笔记

转载:http://mp.weixin.qq.com/s?__biz=MzA3MTIxNzkyNg==&mid=204081791&idx=1&sn=27bb1d827e0f8582596f090471a5c098&scene=5#rd 简单shell脚本 !/bin/bash 这一行表明,不管用户选择的是那种交互式shell,该脚本需要使用bash shell来运行.由于每种shell的语法大不相同,所以这句非常重要. 简单实例 下面是一个非常简单的shell脚本.它只是

Linux shell脚本入门

两台虚拟机,均要检测 1. Yum是否可用 2.  防火墙默认区域修改为trusted 3. IP地址是否配置 ####################################################### 二.普通用户(必须还原环境) 客户端普通用户访问服务端nfs-server服务, 服务端会以客户端相同UID身份的本地用户进行权限判定 LDAP :  网络用户,提供用户名 kerberos : 密码验证,实现"一次密码认证,多次免密登录"的通行证机制 1.两台虚拟

Linux入门第五天——shell脚本入门(下)基础语法之调试debug

一.如何debug 1.通过sh命令的参数: sh [-nvx] scripts.sh 选项与参数: -n :不要执行 script,仅查询语法的问题: -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上: -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数! 示例1:no news is good news [[email protected] tmp]# sh -n add1_100.sh [[email protected] tmp]# 示例2:

Shell脚本入门基础

Shell脚本 DKing~共享 1.1 脚本概念 将多个命令先放入到一个文件中,方便一次性执行的一个程序文件 统一脚本存放目录:/server/scripts 推荐使用vim编辑脚本 查看脚本执行过程 :sh -x 脚本 1.2 脚本编辑格式: #!/bin/bash #author:dqf #date:2018/1/11 #ver:1.0 #desc:backup /etc to /backup 脚本编辑示例: #!/bin/bash #author:dqf #date:2018/1/11

Shell脚本入门学习

2018-04-29 00:34:18编辑 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) 由于易用和