Linux Shell 编程基础篇

本文详细介绍了Shell脚本的基础知识,包括变量处理、引用、命令替换、测试结构、判断结构、循环结构以及函数定义等。同时深入探讨了变量的高级用法,如字符串操作和类型声明,为读者提供了全面的Shell脚本编程指南。

一、变量

1、变量替换和赋值

      引用变量值 $  赋值 =

2、环境变量

 

3、位置参数

作为交互时的输入  $0脚本名字,$1第一个参数 ,但是从第10个参数开始就要用花括号括起来${10}

二、引用

""     双引号 引用除美元符号,反引号,反斜线之外的所有字符

''      单引号 引用所有字符

``    反引号   将内容解释为系统命令

\    反斜线   转义符

三、命令替换  (将命令的标准输出作为值赋给某个变量)

`Linux命令`  或者 ${ Linux 命令 }

三、测试结构也就是比较结构[ ]  左右中括号前后均要又空格

1、整数比较 

[ num1 operator num2 ]    [ 1 -gt 2 ]    

2、浮点数比较 需要借助bc计算器

`echo '1.1>1' | bc`

3、字符串比较

test "$str"  返回字符串str是否不为空   注意其中的双引号不能少

test -n "$str" 返回字符串str是否为空

[ "$str1" = "$str2" ]   [ "$str1" != "$str2"]

4、文件操作符

test file_operator File

[ file_operator file ]    如   [ -f filename ] 是否为文件

5、逻辑运算符

[ ! expression ] 非  [ expression1 -a expression2 ] 与  [ expression1 -o expression2 ] 或

四、判断

1、if结构

if expression

then

command

else

command

fi

或者

if expression

then

command

elif expression

then command

else 

command

fi

2、case结构

case variable in

value1)

      command;;

value2)

      command;;

valueN)

      command;;

*)

     command;;

esac

3、列表for循环

 

 

for variable in 1 2 3 4 5 

do

    echo "Hello ,$variable"

done

4、不带列表的for循环(通过命令行传递列表)

for argument

do

     echo "$argument"

done

5、类C风格的for循环

for(( expre1;expre2;expr3 ))

do

    command

done

如:

for(( interger = 1;integer <= 5;integer++ ))

do

    echo "$interger"

done

六、变量的高级用法

1、${#....}和expr length  得字符串得长度

2、expr index $string $substring   在字符串$string上匹配$substring中字符第一次出现的位置

3、expr match $string $substring   

在string的开头匹配substring字符串,返回匹配到substring字符串的长度,substring可以时字符串也可以是正则表达式

如:string="Speeding up small jobs in Hadoop"

       expr match "$string" Spe

       3

4、抽取子串${...}和expre

${string:position}  ${string:postion:length}  //从左边开始截取

${string: -position} #{string:(position)}   //从右边开始截取

 

5、有类型的变量

   declare   [选项] 变量名    选项有  -r (只读) -i(整形) -a(数组) -x(环境变量)

6、间接变量引用

如果一个变量的值是另一个变量的名字,从第一个变量引用第二个变量的值就称为间接变量引用

两种格式表示 eval tempvar=\$$variable  和 tempvar=${!variable}

那么直接引用与间接引用有什么区别呢,看下述例子

variable1=variable2

variable2=Hadoop

echo "varable1=$variable1"   //直接引用输出variable2

eval tempvar=\$$variable1

echo "tempvar = $tempvar" //间接引用输出Hadoop

七、函数

1、函数定义  function func_name(){}

2、脚本中放置多个函数,脚本执行时按照调用函数的顺序执行这些函数。

3、函数相互调用,直接通过函数名调用

 

 

 

 

本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 双引号引用 57 8.1.2 grep选项 57 8.1.3 查询多个文件 57 8.1.4 行匹配 57 8.1.5 行数 58 8
网上此书的目录很乱,而且一本书分割为好多文件。我详细整理了目录,并且合并为一个PDF文件。希望对大家有帮助。呵呵,这真的是一本好书《LINUX与UNIX SHELL编程指南》 --------------------------------------------- 经典《Linux与UNIX Shell编程指南》 shell是一种完整的编程语言,易学易用;shell脚本可以使烦人的手工作业自动化,使你的工作变得简单、轻松!本书通过各种实用的系统管理小技巧和趣味脚本代码,详尽地介绍了shell编程各个不同的方面。学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍了SHELL编程技巧,各种UNIX命令及语法,还涉及了UNIX的文字处理以及少量的系统管理问题。本书内容全面,文字简洁流畅,适合SHELL编程人员学习、参考。 目录 第一部分 SHELL 第一章 文件安全与权限 第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一章 合并与分割 第十二章 TR用法 第三部分 登录环境 第十三章 登录环境 第十四章 环境和SHELL变量 第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建屏幕输出 第二二章 创建屏幕输入 第二三章 调试脚本 第二四章 SHELL嵌入命令 第五部分 高级SHELL编程技巧 第二五章 深入讨论 << 第二六章 SHELL工具 第二七章 几个脚本例子 第二八章 运行级别脚本 第二九章 CGI脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值