shell学习笔记

一、shell变量

1、变量名与赋值符号间不能有空格。

2、首个字符必须为字母a~z或A~Z。

3、使用一个已定义的变量,在变量名前加‘$‘,如:

myName=“firefly”

echo $myname

echo ${myName}

加花括号帮助识别变量的边界,建议加上s。

4、删除变量:unset varName,不能删除只读变量。

5、三种变量:局部变量、环境变量、shell变量

二、shell替换

1、变量替换

echo -e "hello, Emma!\n"

若无-e,则不转义而直接输出

2、3、略

三、条件语句

if-else语句

(1)if...then...fi

if [ expression ]

then

Statement(s) to be executed if expression is true

fi

(2)if...else...fi

if [ expression ]

then

Statement(s) to be executed if expression is true

else

Statement(s) to be executed if expression is not true

fi

(3)if...elif...fi

if [ expression 1 ]

then

Statement(s) to be executed if expression 1 is true

elif [ expression 2 ]

then

Statement(s) to be executed if expression 2 is true

elif [ expression 3 ]

then

Statement(s) to be executed if expression 3 is true

else

Statement(s) to be executed if no expression is true

fi

注:

(1)expression与方括号[]间有空格

(2)条件语句中可以使用符号>,>=,==,<,<=,!=或者-gt, -gq, -eq, -lt, -lq, -nq判断大小关系

case..seac语句

1、同其他语言switch-case语句,为多分支选择结构;

2、case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

case 值 in        #in为关键字

模式1)

command1

...

commandn

;;

模式n)

command1

...

commandn

;;

*)

command1

...

commandn

;;

esac

(1)每一模式都必须以右括号结束,取值可以为变量或常数;

(2)匹配发现取值符合某模式后执行该模式的命令直至‘;;‘结束,‘;;‘类比break语句;

(3)若无匹配模式,用‘*‘捕获该值,再执行后面的语句。

四、shell注释:只能单行注释,前面加‘#‘

如果大段代码需要注释或者取消注释,可以把要注释部分用花括号括起来,定义成函数,未被调用则不执行达到注释的效果。

五、字符串:单引号、双引号、无引号

单引号字符串的限制:

  1. - 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  2. - 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号的优点:

  1. - 双引号里可以有变量
  2. - 双引号里可以出现转义字符

六、shell数组

1、定义数组,shell中括号表示数组,数组元素用空格符号分开

arrName=(1 2 3)或者

arrName=(1

2

3)或者

arrName[0]=0

arrName[1]=1

arrName[2]=2

2、读取数组,格式${arrName[index]}

value=${arrName[2]}

注:使用符号‘@‘或‘*‘读取数组中所有元素

eg:    ${arrName[*]}    、 ${arrName[@]}

3、获取数组的长度

获取数组的长度方法同字符串

获取数组元素个数:length=${#varName[*]}

获取数组单个元素的长度:lengthn=${#varName[2]}

七、shell echo命令

你类比C语言中的printf,C++中的cout

shell中也有printf,稍有不同

这里仅说明与C语言printf()函数的不同:

  • printf 命令不用加括号
  • format-string 可以没有引号,但最好加上,单引号双引号均可。
  • 参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
  • arguments 使用空格分隔,不用逗号。

eg:

  1. $ printf"%d %s\n"1"abc"
  2. 1 abc

八、shell循环语句

1、for循环

格式:

for 变量 in 列表

do

command1

...

commandn

done

(1)列表是一组值(数值、字符串)组成的序列,每个值通过空格分隔。

(2)每循环一次,将列表中的下一个值赋值给变量。

(3)in列表是可选的,若不用则使用其位置参数。

for var in 1 3 5 7

#!/bin/sh

for var in 1 3 5  9

do

echo ${var}

done

2、while循环

格式:

while command

do

Statement(s) to be executed if command is true

done

3、unitl循环

格式

until command

do

Statement(s) to be executed until command is true

done

退出循环:break、continue

注:

(1)嵌套循环中,break n表示退出第n层循环,从内层开始计数。

(2)continue退出当前循环。

九、shell函数

  1. 删除函数:$unset .f function_name
  2. 当n>10时需要${n}获取参数;n<10时可以直接$n;

十、输入输出重定向

(1)>(或<)输出(或输入)重定向会覆盖原内容;

(2)>>(或<<)输出(或输入)重定向不会覆盖原内容。

十一、shell文件包含

shell可以包含外部脚本,将外部脚本的内容合并到当前脚本。

格式:

(1). filename(注意空格)

(2)source filename

注:被包含脚本不需要执行权限。

推荐学习资料:

(1)Linux shell脚本教程

(2)Bash Reference Manual

(3)Bash Guide for Beginners

(4)Advanced Bash-Scripting

时间: 2024-12-22 17:25:22

shell学习笔记的相关文章

Shell学习笔记——第三章

第三章 /etc/passwd 文件包含一个所有系统用户账户组成的列表,以及一些关于每个用户的基本信息. 例rich:x:501:Rich Blum:/home/rich:/bin/bash 每个条目都有7个数据字段,例使用冒号分隔.系统使用这些字段中的数据向用户分配具体的特性.这些字段分别有 用户名:用户密码(如果密码存储在其他文件中,则为占位符):用户的系统用户ID编号:用户的系统组的ID编号:用户的全名:用户默认的主目录:用户的默认Shell目录: cd 命令 略过 列表命令(ls) 参数

SHELL学习笔记----IF条件判断,判断条件

SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here       elif list then           do another thing here       else          do something else here fi  EX1: #!/bin/bash if [ `uname -m` == "x86_64" ]

Linux Shell 学习笔记

2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用. exit(0)表示正常退出执行程序,如果加其它的数值:1,2,....可以表示由于不同的错误原因而退出 . main函数中exit(0)等价于return 0. 1. Linux下一条命令或一个进程执行完成会返回一个一个状态码. 0 === 成功执行 非0 === 执行过程

[Bash Shell] Shell学习笔记

1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,s

shell学习笔记之六(测试和判断)

测试和判断 测试 利用命令执行后的$?来判断命令是否执行正常.$?==0 ? 正常:错误 测试结构: 1.test expression 2.[ expression ] #注意表达式两侧的空格 方式2增加了代码的可读性,且更容易与if,case,while这些条件判断的关键字联用. 文件测试: 1.test file_operator FILE 2.[ file_operator FILE ] 例: test -e /var/log/message echo $? #文件存在返回0,不存在返回

shell学习笔记---抄录

SHELL笔记 1.查看一个文件或目录的大小 ls   du 2.查看状态     stat 文件名 3.系统本身所有,通常为大写字母 4.系统变量通过 set 或 declare 指令进行查看 5.UDV 变量(user defined variable) 用户创建和维护,建议大写(为什么?) 原因:避免冲突与混淆,因为 Linux 系统中命令全部采用小写的方式 6.Shell 中所有变量定义都为字符串. 变量区分大小写,如:foo 和 Foo 是两个不同的变量 变量必须以字母或下划线开头,不

CentOS 7 之Shell学习笔记

脚本是个永恒的话题,以前Dos下面也有Shell编程这一说的,比如说BAT文件有人写的好的话,也是瞬间速度变高大上.Linux下面这个应该更占比重了.我看到园子里有位园友做了一个Linux Shell脚本攻略 读书笔记,笔记概括总结的太好了,值得逐一实践. 为学Linux ,我读过的书藉, 这篇也是个不错的总结,前人的经验真是宝贵,分享真是一种态度.

shell 学习笔记整理(二)

特殊字符:    #! 开始的标志    ;  多个命令一起连用的分隔符    [[email protected] log]# echo a;echo b;echo c    a    b    c    .  多种作用:        1. 相当与 source 命令        2. 作为文件名称的一部分(隐藏文件名)  (使用ls -a  可以查看linux下面的隐藏文件)        3.如果作为目录名的话,一个单独的点代表当前工作目录,两个点代表上一级目录.           

Shell学习笔记 - 环境变量配置文件

一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [[email protected] ~]# source /etc/profile #让/etc/profile配置文件生效 [[email protected] ~]# . /etc/profile #与上面的命令效果一样 二.全局环境变量配置文件 全局环境变量配置文件会对所有用户生效. 1. /etc/profile 作用: 1) 定义U