linux基础shell,Linux基础Shell

本文详细介绍了Shell脚本中的字符串拼接、长度计算和分割方法,以及如何设置只读变量和清除变量值。还讲解了权限管理,包括chmod命令的使用。此外,文章探讨了从键盘读取变量值、算术运算及条件测试语句,如test和if语句的用法。最后,提到了循环结构如for和while循环,以及break和continue语句在控制流程中的作用。通过实例展示了Shell脚本编程的基础知识。
摘要由CSDN通过智能技术生成

1.字符串

(1)字符串的拼接

引用字符串的值,并将多个字符串的值作为新的字符串赋予给新的变量,

即 str=“$string $string2"

(2)字符串长度

lenth=$(string)

注意:此时的#不再是注释,只表示计算字符的长度

(3) 字符串的分割

nstr=${string:a:b}

把字符串string从第a个之后开始截取b个字符,赋予新的变量

2.只读:readonly

num=34

echo $num

num=88 #错误(error)

echo $num

只读变量的值不可更改!!!

3.清楚变量的值

num=333

echo $num

unset num

echo $num

注意:unset是清除变量的值。

若变量未定义直接使用,其值为零

4.两次强调

(1)shell程序必须指定脚本的解释程序,即

在shell脚本程序的第一行必须

是: #!/bin/bash

(2)空格问题

变量赋值时,=两边不可有空格

字符串的空格问题

其他情况;尽量加空格

5.权限问题

r:可读 w:可写 x:可执行

sudo chmod a+x filename

sudo chmod u+x,g+x filename

sudo chmod +x filename

sudo chmod 777 filename

6.从键盘获取变量值

read 变量名

read:在没有输入时,则一直等待输入。

read 变量一 变量二 变量三

此情况,将输入的第一个值赋予给变量一,第二个给变量二,剩余的全给变量三

不建议使用read num1 num2 num3 这种获得变量值的方法

建议:

read num1

read num2

read numn

7.shell的三大语句

功能语句,说明型语句,结构分支语句

(1)说明型语句

以#开头的语句,至行末均为说明型语句,说明型语句,不解释执行(正行),即注释

说明型语句的位置可以程序中的任何位置,可以放在解释语句之后,从#开始的部分到末行, #只能注释一行。

(2)功能型语句

系统命令,自写程序...

(3)结构分支语句

多路分支语句,循环语句,循环控制语句,测试语句条件语句

结构性语句

8.加、减、乘、除、去余(整数)

expr let :针对整数做简单的加减乘除去余(整数)

expr:

sum=expr $num + $num1

sum1=expr $num\*$num1

sum=$(expr $num + $num1)

sum1=$(expr $num*$num1)

注意:空格问题

let:

let sum=num+num1

let sum=num*num1

乘法*:是去掉的原意,告诉解释器这是真的乘法!

``:取得结果集

$()去的结果集

9.条件测试语句

test 测试语句

[条件测试语句]:注意[]中的空格!!!

-e file:如果file存在,则为真

-d file:如果file为目录,则为真

-f file:如果file常规文件,

-r file:如果file可读,则为真

-w file:如果file可写,则为真

-x file:如果file可执行,则为真

整数测试:

-eq:是否等于

-ne:是否不等于

-gt:是否大于

-ge:是否大于或等于

-lt: 是否小于

-le;是否小于或等于

字符串比较:

-z string:string长度是否为零

-n string:若string非零,为真

string==string1:是否相同

string!=string1:是否不同

逻辑操作符:

&&:逻辑与

事件一 && 事件二 :当事件一和事件二都为真,则为真

-a:and

-o:or

常见变量:

$?:命令执行后的返回状态,返回零表示执行成功

$:所有参数列表

$@:所有参数列表

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

$0:可执行命令本身,不是位置参数

$1~$n:分别表示第一个至第n个位置参数

echo -n:不换行输出!

9.if语句

(1)if[条件]

then

命令

fi

(2)if[条件]

then

命令

elif[条件]

then

命令

else

命令

fi

若表达式为真,则执行命令表1中的命令,退出否则执行命令表2中的语句退出if;

(3)test 语句的用法:

test命令测试的条件成立时,命令返回值为真,否则返回为假

方式一:

test $name -eq $1

echo $?

方式二:

if test -f $filename

then

.....

fi

方式三:

if [ -f $filename ]

then

......

fi

10.case....esac

多路分支语句case用于多重条件测试,语法结构清晰自然,

语法结构为:

case 字符串变量 in #case语句只能检测字符串变量

模式1) #各模式中可用文件名元字符,以右括号结束

命令表1

;; #命令表以单独的双分号结束,退出case语句

模式2)

命令表2

;;

.......

模式n)

命令表n

;; #最后一个双分号行可以省略

esac

( | 多重选择)

(? 任意一个字符)

(* 任意多个字符)

????? [a-z] a至z之间的任意字符

11.for循环

for....do...done

当循环次数确定时,使用for循环语句来多次执行一条或一组命令。

循环体由语句括号do和done来限定。

格式为:

for变量名 in 单词表

do

命令表

done

变量名依次去单词表的各个单词,每取一次单词,就执行一次

循环体中的命令,循环次数由单词表中的单词数确定,命令表中的命令可以是一条,也可以是由分好或换行符分的多条。

若单词表是命令行上的u哦有位置的参数时,可以在for语句中省略"in 单词表"部分!

方法二:

for((i=0;i<10;++i))

注意:

for循环值列表可以省略,默认从输入参数中获取

//三角形

12.while

语法结构:

while 命令或表达方式

do

命令表

done

while语句首先测试气候的命令或者表达方式的值,若过为真就执行一次

循环体中的命令,然后在测试该命令或表达方式的值,执行循环体,直到该命令或表达方式为假时退出循环。

while语句的退出状态为命令表中执行的最后一条命令的退出状态。

13.break和continue

break n #跳出n层

continue语句则马上转到最近一层循环语句的下一轮循环上。

continue n #跳转到最近n层循环语句的下一轮循环上。

今天所学内容完全没有搞明白,像看电影一样走了个过场,不能这样!我花费了时间精力!我就要学会!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值