Linux Shell study note

本文介绍了Shell脚本的基础知识,包括变量定义与使用、字符串操作、数组应用以及条件测试命令。详细讲解了如何定义和使用变量,字符串的处理方法,数组的创建与访问方式,并通过test命令展示了数值、字符串及文件的测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell basic


一、Shell 变量

1.定义变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

your_name="w3cschool.cc"

注意,变量名和等号之间不能有空格

除了显式地直接赋值,还可以用语句给变量赋值,如:

for file in `ls /etc`

以上语句将 /etc 下目录的文件名循环出来

2.使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

your_name="qinjx"

echo $your_name

echo ${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况

for skill in Ada Coffe Action Java do

    echo "I am goodat ${skill}Script"

done

已定义的变量,可以被重新定义,如:

your_name="tom"

echo $your_name

rootrrryour_name="alibaba"

echo $your_name

这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)


3.Shell 字符串

单引号

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号:

双引号里可以有变量

双引号里可以出现转义字符

拼接字符串:

your_name="qinjx"

greeting="hello, "$your_name" !"

greeting_1="hello, ${your_name} !"

echo $greeting $greeting_1

获取字符串长度:

string="abcd"

echo ${#string} #输出 4

提取子字符串

string="alibaba is a great company"

echo ${string:1:4} #输出liba

查找子字符串

string="alibaba is a great company"

echo `exprindex "$string" is`

4.Shell 数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。数组元素的下标由0开始编号

用括号来表示数组,数组元素用"空格"符号分割开

数组名=(1 2 ... n)

array_name=(value0 value1 value2 value3) 

array_name[0]=value0

array_name[1]=value1

array_name[n]=valuen

*可以不使用连续的下标,而且下标的范围没有限制。

读取数组:${数组名[下标]}

使用@符号可以获取数组中的所有元素,例如:echo${array_name[@]}

获取数组的长度:

# 取得数组元素的个数

length=${#array_name[@]}

# 或者

length=${#array_name[*]}

# 取得数组单个元素的长度

lengthn=${#array_name[n]}

5.Shell注释

"#"开头的行就是注释,shell里没有多行注释

可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果 


二、Shell test命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

数值测试:

参数        

说明

-eq        

等于则为真

-ne        

不等于则为真

-gt        

大于则为真

-ge        

大于等于则为真

-lt        

小于则为真

-le        

小于等于则为真


字符串测试:

参数        

说明

=        

等于则为真

!=        

不相等则为真

-z 字符串        

判定字串是否为0 ,若 string 为空字串,则为 true

-n 字符串        

判定字串是否非为 0 ?,若 string 为空字串,则为 false。

注: -n 亦可省略


文件测试:

参数        

说明

-e 文件名        

如果文件存在则为真

-r 文件名        

如果文件存在且可读则为真

-w 文件名        

如果文件存在且可写则为真

-x 文件名        

如果文件存在且可执行则为真

-s 文件名        

如果文件存在且为『非空白文件』则为真

-d 文件名        

如果文件存在且为目录则为真

-f 文件名        

如果文件存在且为普通文件则为真

-c 文件名        

如果文件存在且为字符型特殊文件则为真

-b 文件名        

如果文件存在且为块特殊文件则为真

-l 文件名

该『档名』是否存在且为一个连结档


逻辑操作符:

参数        

说明

-a        

(and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 r 与 x 权限时,才回传 true。

-o        

(or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 r 或 x 权限时,就可回传 true。

!        

反相状态,如 test ! -x file ,当 file 不具有 x 时,回传 true




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值