前言
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,shell 和 shell script 是两个不同的概念。
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。
变量
定义:变量是计算机系统用于保存可变值的数据类型
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
index=/home/hisat2/index/genome
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线 _。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
变量名称:在linux系统中,变量名称一般都是大写,命令为小写,这是一种约定俗成的规范。
用来做什么?linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放的位置等。脚本中大量重复出现的可以用变量代替。
变量值:可以直接通过变量名称来提取到对应的变量值。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
${index}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
unset index #删除变量
举个例子
ref=./index/genome
sample=app
thread=4
bowtie2 -x ${ref} -p $thread -U ${sample}_trimmed.fq.gz 2 > $sample.mapping.log | samtools view -o $sample.bam
变量类型
运行shell时,会同时存在三种变量:
- 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
网友评论