Linux(四)

shell脚本

shell脚本(解释性语言):一堆shell命令的集合
在这里插入图片描述

shell脚本开发过程

创建

创建.sh文件

linux@ubuntu:~/24031/LinuxC/day4$ touch 1.sh

编写.sh文件

在这里插入图片描述
在这里插入图片描述

添加执行的权限 chmod 777 1.sh

linux@ubuntu:~/24031/LinuxC/day4$ ls -l
total 4
-rw-r--r-- 1 linux linux 5 49 22:37 1.sh
linux@ubuntu:~/24031/LinuxC/day4$ chmod 777 1.sh #修改.sh文件的权限
linux@ubuntu:~/24031/LinuxC/day4$ ls -l
total 4
-rwxrwxrwx 1 linux linux 5 49 22:37 1.sh

运行

linux@ubuntu:~/24031/LinuxC/day4$ ./1.sh
2024年 04月 09日 星期二 22:40:17 PDT

shell中注释

# shell中的脚本

在这里插入图片描述

shell中变量

用户自定义变量 (尽量大写)

变量名的命名规范:
<1>.由数字,字母,下划线组成,首字母不能为数字
<2>.不能为关键字或保留字
<3>.尽量见名知意

在这里插入图片描述
在这里插入图片描述

位置参数即命令行参数

由系统提供的参数称为叫位置参数

在这里插入图片描述

预定义变量

预定义变量是在shell一开始时就定义了的变量

$# 包含命令行参数的个数
$@ 包含所有命令行参数:“$1…$9”
$* 包含所有命令行参数:“$1…$9”
$$ 包含正在执行进程的ID号
$? 包含上一个命令的退出状态,正常退出返回0,反之为非0值

在这里插入图片描述
在这里插入图片描述

环境变量

环境变量 用于所有的用户进程

在这里插入图片描述

shell中程序和语句

说明性语句

#!/bin/bash 告诉计算机使用哪个办法去解析我们的代码

功能性语句

echo 输出

在这里插入图片描述

read 键盘读入变量值

在这里插入图片描述

expr 算术运算命令 (主要用于整数运算)

在这里插入图片描述

test命令

test语句可测试3种对象

字符串

s1 = s2 测试两个字符串是否完全一样
s1 != s2 测试两个字符串是否有差异
-z s1 测试s1字符串的长度是否为0
-n s1 测试s1字符串的长度是否不为0

在这里插入图片描述

整数

a - eq b (equal)
a -ne b
a -gt b (great)
a -ge b
a -lt b (little)
a -le b

在这里插入图片描述

文件属性

-d name 测试name是否为一个目录
-f name 测试name是否为一个文件
-L name 测试name是否为符号链接
-r name 测试name文件是否存在且为可读
-w name 测试name文件是否存在且为可写
-x name 测试name文件是否存在且可执行

在这里插入图片描述

结构性语句

顺序 echo read

选择

单分支

if [条件满足]
then
	语句
fi

双分支

if [条件满足]
then
	语句1
else
	语句2
fi

多分支

if [条件1满足]
then 语句1
elif [条件2满足]
then 语句2
elif [条件3满足]
then 语句3
.......
else
	语句n
fi
case 字符串变量 in
	模式1)
		命令表1
		;;
	模式2)
		命令表2
		;;
	模式3)
		命令表3
		;;
	.......
	*)
		命令表n+1
		;;
esac

在这里插入图片描述
在这里插入图片描述

1.请输入一个文件,判断它是否是普通文件
如果是普通文件,判断它是否有写的权限,
如果有写的权限,向文件中写入"hello world"
如果文件没有写的权限,给它添加写权限后,写入 “hello world”
在这里插入图片描述

循环

for循环

#带列表的for循环
for 变量名 in 列表
do
	命令表
done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
while循环

#while语法
while [条件为真]
do
	命令表
done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

shell中函数

函数的定义

方式一

函数名()
{
	函数体
}

方式二

function 函数名()
{
	函数体
}
#编写两个数求和的函数
function add()
{
	#$1表示第一个参数 $2表示第二个参数
	RES=`expr $1 + $2`
	echo "$1 + $2 = $RES"
	return $RES
}

函数的调用

方式一

变量名=`函数名 参数列表`
函数的所有标准输出都传递给了主程序的变量

在这里插入图片描述
方式二

函数名 参数列表
echo $? #上一个命令的退出状态

在这里插入图片描述

交叉编译工具步骤写成脚本

1、将交叉编译工具链压缩包拖到虚拟机的某个目录下
2、打开终端,进入该目录
3、解压
sudo tar -xzvf gcc-4.6.4.tar.gz(名字根据实际文件名替换)
注意:解压时,压缩包的名字可以使用tab键自动补全
4、
进入到该目录,直到进入bin目录
5、使用pwd命令,得到该目录的绝对路径,并将该目录的绝对路径拷贝下来
6、sudo vim /etc/profile
7、在该文件的末尾加上
export PATH=$PATH:/home/linux/gcc-4.6.4/bin
注意:“$PATH:"后的路径为你刚才拷贝的绝对路径
8、添加完成后,保存退出
9、重启虚拟机
10、打开终端,输入arm-liunx-gcc 然后tab键,如果能够自动补全,则说明交叉编译工具链已安装成功
#jiaocha.sh 运行该shell脚本,直接安装叫交叉编译工具
sudo ./jiaocha.sh
#!/bin/bash
cd $HOME #进入用户主目录
sudo tar -xzvf gcc-4.6.4.tar.gz #解压到当前目录
cd gcc-4.6.4/bin
myPATH=`pwd`
echo "myPATH=$myPATH"
echo "export PATH=\$PATH:$myPATH" >> /etc/profile
sudo shutdown -h now
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值