Linux Shell基础学习(一)

shell脚本是什么呢?简单来说,它就是许多命令的一个集合;Shell脚本是一个面向过程的编程语言,它是通过解释器来解释运行脚本里的每一条命令;

面向过程的编程语言的元素:变量、数组、流程、函数

下面就来学习一下Shell脚本吧!

一.变量      
变量:可以理解它为一个命名的内存空间,里面的数据是可变的

1.变量命名法则:

(1).只能使用数字、字母或下划线,而且不能以数字开头

(2).不能使用系统中的关键字:比如if,elif,fi,then,for...等

(3).见名知义

2.变量类型

(1).本地变量:只对当前Shell进程有效,对当前shell之外的其它shell(包括其父shell,子shell等)都无效

(2).环境变量:对当前shell进程及子shell进程有效

(3).局部变量:仅在当前shell进程中的某段代码空间内有效,通常用于函数内的变量

(4).位置变量:表示参数在传递过程中所在的位置,比如:$0表示shell脚本自身,$1表示第一个参数,$2表示第三个参数……

(5).特殊变量:表示特殊作用的变量,比如:$?表示上一个命令执行成功与否的状态值,$#表示参数个数,[email protected]和$*表示所有参数的集合

3.声明变量并赋值

(1).本地变量

无须声明,直接赋值即可被调用

VAR_NAME=VALUE

(2).环境变量

export VAR_NAME=VALUE或declare -x VAR_NAME=VALUE

可以使用以下命令查看当前shell中的环境变量:

env

export

printenv

(3).局部变量

local VAR_NAME=VALUE

(4).只读变量

readonly VAR_NAME=VALUE或declare -r VAR_NAME=VALUE

只读变量一旦被赋值后,不能再次被赋值

(5)整型变量

let VAR_NAME=VALUE或declare -i VAR_NAME=VALUE

注:查看当前已定义的所有变量可以用以下命令:

set

略……

(6)几个高级的变量赋值:

${var:-word}:表示如果var为空或未设置,那么返回word;否则,则返回

${var:=word}:表示如果var为空或未设置,那么返回Word;并且将word赋值给var;否则返回var中的值

${var:?err_info}:表示如果Var为空或未设置,那么返回错误 信息err_info;否则,则返回Var自身的值

${var:+word}:表示如果var变量已设置,则返回word;否则,返回var值

4.变量引用

${VAR_NAME}

5.变量撤消

unset VAR_NAME

注:环境变量不能被撤消

二.数组

数组:是一个连续的多个独立的内存空间,每个内存空间相当于一个变量,只是将许多变量组合起来形成一个集合

1.数组声明

declare -a ARRAR_NAME

2.数组元素

数组元素即是数组集合中的一个个成员,每个成员都是由数组名加索引编号组成,编号从0开始,比如:array[0],array[1]……

3.数组赋值

(1)一次只赋值一个元素

ARRAY[index]=VALUE

(2)一次赋值全部元素

ARRAY_NAME=("red" "black" "white")

(3)指定索引号进行赋值

ARRAY=([0]="red" [1]="black" [3]="white")

(4)交互式赋值

read -a ARRAY_NAME

4.引用数组元素

(1)指定元素编号

${ARRAY[index]}

(2)获取全部元素值

${ARRAY[*]}或${ARRAY[@]}

(3)数组元数个数:

${#ARRAY[*]}或${#ARRAY[@]}

(4)指定元素偏移值获取元素值

${ARRAY[@]:offset:number}

例如,对于数组a2偏移一个,取后面两个:

(5)向数组中追加一个元素

ARRAR[${#ARRAR[@]}]

例如,向a2数组中添加一个元素:

三.字符串

(1).字符串切片

${var:offset:lenth} :对Var字串偏移取出字符

${var: -lenth}:取出var字串最后的几个字符,注:冒号之后要有空格

(2).基于模式切割字符串

${var#*word}:word可以是指定的任意字符,表示自左而右,查找var变量,删除从首字符至首次出现与word匹配的字符之间的所有字符

${var##*word}:word可以是指定的任意字符,表示自左而右查找Var变量,删除从首字符至最后一次出现与Word匹配的字符之间的所有字符

${var%word*}:word可以是指定的任意字符,表示自右而左查找,删除最后一个字符至首次匹配到的字符之间的所有字符

${var%%word*}:word可以是指定的任意字符,表示自右而左查找,删除最后一个字符至最后一次匹配到的字符之间的所有字符

(3)查找并替换

${var/pattern/substi}:查找var所表示的字串中,第一次被pattern匹配到的字串,并以substi替换之

${var//pattern/substi}:查找Var所表示的字串中,全局替换

${var/#pattern/substi}:行首锚定查找并替换

${var/%pattern/substi}:行尾锚定查找并替换

(4)查找并删除

${var/pattern}:删除第一次被pattern匹配到字符

${var//pattern}:全局匹配并删除

${var/#pattern}:行首匹配并删除

${var/%pattern}:行尾匹配并删除

(5)字符串大小写转换

var=VALUE

${var^^} :所有小写字符转换成大写字符

var=VALUE

${var,,}:所有大写字符转换成小写字符

时间: 2024-10-12 01:28:12

Linux Shell基础学习(一)的相关文章

Linux Shell基础学习——循环与条件判断

for循环 1. 注意do必须换行 for i in {1..10}  do    echo $i done 2. 注意do必须换行 for i in 1 2 3 4 5  do     echo $i done 3. 遍历命令输出的结果 for shname in `ls *.sh` do        echo $shname done 4. 类似高级语言的for循环 for((i=1;i<100;i++)) do         echo $i done for循环就到这里,有这几个就够用

Linux shell 菜鸟学习笔记....

20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的变量 定义变量直接用 variablename= value 就可以 其中变量名与等号之间没有空格. 使用变量的时候 是 ${vairablename} 的方式进行使用 大括号可以有可以没有,但是建议有. 可以使用 for file in `ls /etc/` 的方式来循环取得文件名. 使用do d

linux shell 命令学习(5) xxd- make a hexdump or do the reverse.

对于标准输入或者给定的文件,显示其16进制的内容.也可以反过来进行转换. ? 1 2 3 xxd -h[elp] xxd [options] [infile [outfile]] xxd -r[evert] [options] [infile [outfile]] 如果没有指定输入文件, 则采用标准输入. -b: 以2进制格式进行输出 ? 1 2 3 4 [[email protected] src]$ xxd -b train.ini 0000000: 01011011 01110100 01

Shell基础学习小结

0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本身的限制和效率问题,以下情况一般不推荐Shell: 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等). 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理). 有跨平台(操作系统)移植需求(一般使用C 或Java)

一、Linux Shell基础

1.1.shell基础 Bash 是一个与Bourne Shell兼容的.执行从标准输入设备文件读取的命令的语言解释器.Bash是Bournae-Again Shell的缩写.Bash与原来的Unix sh Shell向后兼容,并且融合了一些有用的Korn Shell和C Shell的特性.它相对于sh在编程和交互式使用两方面都有功能改进.另外,大部分的sh脚本可以在不修改的情况下由Bash直接运行. Linux环境由以下几部分构成: 内核-------------------Linux操作系统

Linux shell基础(七)

十六. 文件查找命令find: 下面给出find命令的主要应用示例:    /> ls -l     #列出当前目录下所包含的测试文件    -rw-r--r--. 1 root root 48217 Nov 12 00:57 install.log    -rw-r--r--. 1 root root      37 Nov 12 00:56 testfile.dat    -rw-r--r--. 1 root root 10530 Nov 11 23:08 test.tar.bz2    -

Linux shell command学习笔记(一)

Key points: Shell种类,echo,$,基本语法,ls,man,su,sudo,grep,ps,clear,cp,rm,cat,more 参考:http://www.jb51.net/LINUXjishu/45329.html Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell.在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash). <echo> echo $SHELL 在Linux中,$符号

linux shell脚本学习笔记一

一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename可读,则为真 [ -r

学习笔记(十一)——Linux Shell 基础知识

1. shell 特性: 使用 history 命令查看命令历史: [[email protected] ~]# history 用户的 history 记录位于用户家目录下 .bash_history 文件中: [[email protected] ~]# vim ~/.bash_history 有关 history 的相关快捷操作: [[email protected] ~]# !!    //上一条命令 [[email protected] ~]# !$    //上一条命令的最后一个参数