Linux shell脚本编程

Shell脚本
125
0
0
2024-09-05

这一部分内容和软件安装有部分重叠

(关于变量和环境变量)

1 Linux系统环境

  • 文件系统结构:一切皆文件 / 虚拟目录的根目录,通常不会在这里存储文件 /bin 二进制目录,存放许多用户级的GNU工具 /home 主目录,Linux在这里创建用户目录 /lib 库目录,存放系统和应用程序的库文件 /media 媒体目录,可移动媒体设备的常用挂载点

Linux系统一般有4个主要部分:内核、shell、文件系统、应用程序

查看CPU信息:lscpu

查看内存信息:free -h

查看硬盘信息:df -h

查看文件大小:du -h -d 1/du -sh ~

查看系统进程与任务:

top(htop)

ps -ef

jobs

2 变量

调用变量时,要在变量前加一个$

2.1 环境变量

用于存储有关shell会话和工作环境的系统变量

常见环境变量见上一篇笔记

2.2 位置参数变量

用于向命令或程序脚本中传递信息

$n:n为数字

$0代表命令本身

$1~$9代表第1~9个参数

10以上的参数需要用大括号包含,如${10}

2.3 状态变量

用于记录命令的运行结果

$?:获取执行上一个指令的执行状态返回值,返回0表示上一个命令或程序执行成功,返回的值非0表示上一个命令执行失败

2.4 自定义变量

由用户自行定义的变量

可用于用户编写的脚本,多个命令间的值传递等

= 前后不要有空格

在单引号中,变量不会被解释

双引号中,变量被解释

因此在使用文本处理三驾马车时都用' ',awk要直接接收到$1 $2 $3,如果用" " $1会被shell提前展开

3 结构化语句

3.1 if条件语句

3.1.1 if条件语句的常见格式:

if进入 fi退出

3.1.2 if条件语句的常见条件

3.1.2.1 数值判断

equal: INT1 -eq INT2

两数相等返回为真

INT2和]之间也有空格!

每一个空格都要打出来!

常用:判断上一个命令是否执行成功?

3.1.2.2 字符串判断

-z STRING 如果STRING的长度为零返回为真 空为真

3.1.2.3 文件判断

!取反

3.2 for循环语句

3.2.1 for循环语句的常见格式

for i in list
do
commands
done

变量要加{ },否则容易分辨不出变量

  • 如何能打印出gene1?

list的三种方法:

1.直接写出list

2.先定义一个list变量

3.可以用命令生成,注意加反引号代表命令优先被执行

3.3 while循环语句

3.3.1 while循环语句的常见格式

while read id
do
commands
done

3.3.2 参数扩展

作用:掐头去尾

一般来说,去尾比掐头更常用

%常用

注意. *的相对位置

  • 练习题

一个> 重定向 会把里面的内容清空

两个>> 表示追加

第2题先把结尾的.sra删除再加上.fastq完成替换

4 shell 脚本编程

env调用当前环境下激活的编译器

shell脚本:修改shell脚本的文件权限后,可以直接通过路径调用(充当command的作用)

file1.sh变成可执行文件,可以当作一个命令直接执行

这个命令是否在环境变量中?

不在环境变量中可通过路径来调用

复习之前的421

shell脚本:参数传递

通过位置参数可以重复利用脚本

fq2fa.sh脚本完成格式转换

shell脚本提交

1:标准输出流

2:标准误输出流

报错也和1一起输出

重点:任务提交

使用PS找出PID

-9 现在马上立刻无条件停下来这个任务