Linux学习笔记(4)

不出意外,应该是最后一篇Linux学习笔记,接下来半个月会对TensorFlow进行总结和案例解析。

shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求,以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

直白的说,shell就是将应用程序解释给Linux内核听,Linux内核再驱动硬件进行一系列操作。不经过shell解释的程序,Linux是听不懂的。

脚本格式:

1、脚本必须以#!/bin/bash开头

2、脚本需要有可执行权限(使用chmod赋予权限)

用vim创建新文件,文件名以xxx.sh命名,表明是一个bashell文件。

脚本的常用执行方式:

1、输入脚本的绝对路径或者相对路径

用pwd显示当前的路径,如果脚本文件是在当前文件夹下,那么使用相对路径就可以执行该文件(前提是该文件有执行权限)。如果脚本文件不在该文件夹下,那么使用绝对路径也可以执行该脚本(仍旧要求执行权限)。

2、利用 sh 文件名  执行脚本文件

表示要将后边的文件以脚本文件来处理(此时可以不要求有执行权限,直接执行即可)。

shell中的变量

1、Linux中的shell变量分为系统变量和自定义变量,自定义变量用的更多;

2、系统变量通常为大写,如$HOME、$PWD、$SHELL、$UESR等,可以用echo 输出相应的内容;

3、显示当前shell中的所有变量:set 输入一个set即可查看所有的变量

定义变量

1、变量的定义可以由字母,数字,下划线组成,但是不能以数字开头。

2、等号两侧不能有空格。

3、变量名一般习惯大写,这是一个规范。

补充

1、变量名=值   如A=100(在shell中常用大写字母来定义变量)

2、撤销变量:unset 变量名    撤销该变量的使用

3、声明静态变量:readonly 变量名   静态变量只能被定义一次,而且不可以被撤销

在使用echo输出变量时,echo A=$A   与echo "A=$A"表示的含义是相同的。A加上$才表示是一个变量,若不加$,系统会默认为普通文本。如果是单引号,默认为字符串。

:<<! 内容  !表示多行注释。前后的:<<!   和  !最好都另起一行。

将命令的返回值赋给变量:

1、A=`date` 反引号,运行反引号里面的内容并把结果返回给A

2、A=$(date)等价于反引号

设置环境变量

在linux系统中,文件目录与其对应的功能是固定的,在/etc/profile文件中可以查看和定义新的环境变量。将一个变量定义为环境变量,该变量就会被多个shell文件所承认和允许,即在多个脚本文件中都可以直接调用该变量,而不用重新定义。

基本语法

1、export 变量名=变量值 (功能:将shell变量定义为环境变量,即全局变量)

2、source 配置文件 (功能:让修改后的配置信息立即生效。如果不运行该步骤,则shell脚本不能识别新的环境变量,即source /etc/profile)

3、echo $变量名 (查询环境变量的值,确认是否定义成功)

位置参数变量

当我们在执行脚本的时候,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。

基本语法:

$n n为数字,$0表示命令本身,$1-9表示第一个到第九个参数,十以上的参数需要用到大括号包含${10}

$* 代表命令行中的所有参数,$*把所有的参数看成一个整体

$@ 代表命令函中的所有参数,不过$@把每个参数区别对待

$# 代表命令行中所有参数的个数

案例,创建myshell.sh脚本:

#!/bin/bash

echo "0=$0 1=$1 2=$2"

echo "所有的参数=$*"

echo "$@"

echo "参数的个数=$#"

保存该脚本文件,根据绝对或相对路径执行该脚本文件。

./myshell.sh 100 200

输出内容为:

第一行三个内容分别为$0$1$2

预定义变量

提前设计好的变量,可以在shell中直接使用

基本语法:

$$ 当前进程的进程号(PID)

$! 后台运行的最后一个进程的进程号

$? 最后一次执行命令的返回状态,如果返回0表示最后一个命令正确执行,如果返回其他值,证明上一个命令是不正确的

运算符

1、运算式的表达 “$((运算式))”、”$[运算式]“或者 expr m + n (expression表达式,注意m、n与运算符之间有空格)

2、如果希望将expr后的计算内容赋给某个变量,需要使用反引号``

3、expr \*,/,%  乘、除、取余

判断语句

语法  [ condition ]   condition为需要判断的内容,且前后都需要有空格

非空返回true,可以用$?进行验证

[ zhou ] 返回true    [ ]   返回false

常用的条件判断:

= 字符串的比较

-lt 小于

-le 小于等于

-eq 等于

-gt 大于

-ge 大于等于

-ne 不等于

-r 有读取权限

-w 有写入权限

-x 有执行权限

-f 文件存在且是一个常规文件

-e 文件存在

-d 文件存在且是一个目录

流程控制之if

If [ condition ]

then

执行

fi

if语句进行判别时,只有condition中的条件满足了才会执行then中的执行语句,如果不满足,则不做输出

多分支

If [ condition ]

then

代码

elif

代码

fi

fi表示代码执行的结束

流程控制之case

case $变量名 in

"值1"

执行部分(如果变量的值在值1中,执行该部分)

"值2"

执行部分

*)(如果变量的值不在以上任意一个范围中)

执行部分

esac

流程控制之for

for 变量 in 值1 值2 值3 …

do

程序/代码

done(运行结束)

或者

for ((初始值;循环控制条件;变量变化))

do

程序/代码

done

流程控制之while

while [ 条件判断式 ]

do

程序/代码

done

read 选项  参数

-p 指定读取值时的提示符

-n 指定读取值时的等待时间,如果没有在指定时间内输入就不再等待了

变量:指定读取值的变量名

在双引号后边必须有一个空格,表示将前边输入的数赋值给后边的NUM和num2,不加空格则不能完成赋值

-p表示会一直等待输入,如果不输入就会一直待在输入界面,-t则表示只等待一定时间。-t 数值 -p 空格不能缺少

函数介绍

两个内置函数的介绍

basename 返回完整路径最后/的部分,常用于获取文件名

basename [pathname][suffix] 删除文件路径的所有前缀包括最后一个/,只保留文件名,输出字符串

如basename /home/aaa/test.txt  只会返回test.txt

dirname 返回完整路径最后斜线/前面的部分,即除去文件名的所有路径

如dirname /home/aaa/test.txt  返回/home/aaa

自定义函数

[ function ] funname[()]

{

action;

[return int;]

}

在调用的时候直接写函数名加值

案例:

#!/bin/bash

function  getsum()

{

SUM=$[$n1 + $n2]

echo "和=$SUM"

}

read -p "请输入N1=" N1

read -p "请输入N2=" N2

getsum $N1 $N2

注意事项:

1、函数都是小写的,变量一般设置为大写

2、运算符号前后要有空格

3、读取的输入变量和运算变量要一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值