linux tcshell 教程,一篇文章让你读懂linux shell编程--基础篇

原标题:一篇文章让你读懂linux shell编程--基础篇

Shell是什么?

shell本身是一个命令解释器,介于操作系统的内核(kernel)和用户之间,可以执行系统调用及系统命令等,让用户以此来与操作系统实现互动。同时,它也用来指一种计算机程序语言(类似于C、Python等)。一个shell程序一般被称为一个脚本。

Shell语言的流派

目前,shell主要有两大流派:

sh:

burne shell (sh)

burne again shell (bash)

csh:

c shell (csh)

tc shell (tcsh)

korn shell (ksh)

目前,大部分Linux系统预设的shell都是bash。

Shell 编程概述

在 Linux 下有一门脚本语言叫做:Shell 脚本,这个脚本语言可以帮助我们简化很多工作,例如批量运行一些命令等,所以还是很有必要学习它的基本用法的,一个简单的 hello.sh 脚本像下面这样。

#!/bin/bash

echo "Hello World!"

第一行 #!/bin/bash 标识该 Shell 脚本由哪个 Shell 解释:/bin/bash。将上面的两行内容写到文件hello.sh中,就可以执行了:

执行shell脚本方法1:

#这样可以省略第一行的:#!/bin/bash

sh ./hello.sh

执行shell脚本方法2:赋予权限才可以执行:

# 赋予可执行权限

chmod a+x hello.sh

# 执行 文件的第一行必须指定执行shell的路径:#!/bin/bash

./hello.sh

# 结果

Hello World!

Shell 变量

Shell 变量分为 3 种:

用户自定义变量

预定义变量

环境变量

定义变量需要注意下面 2 点:

等号前后不要有空格:NUM=10

一般变量名用大写:M=1

使用 $ 符号调用变量,例如:

VAR="Hello Shell!"

echo $VAR

注意:变量定义直接给变量取名字,变量值如果字符串中有空格等特殊字符需要用引号引起来,这样VAR变量中存储了一个字符串,再次调用变量的值需要加符号:$VAR

1. 用户自定义变量

支持字符串类型,浮点等类型,常见有这 3 个前缀:

unset:删除变量

readonly:标记只读变量

export:指定全局变量

c8c049b5691fd19a1b1745903ba8c64d.png

注:可将上面内容存入一个sh结尾的文件中运行;

2. 预定义变量

预定义变量常用来获取命令行的输入,有下面这些:

01f01da97fd95a4e79d10d2c82ef88ba.png

一个例子:

bff04d269fd2772976d45c3b90ba6ddd.png

执行./hello.sh 1 2 3 4 5 的结果:

8996dc9e34e41c2d7166bb49dc1f77e5.png

3. 环境变量

环境变量默认就存在的变量,常用的有下面这几个:

HOME:用户主目录

PATH:系统环境变量 PATH

TERM:当前终端

UID:当前用户 ID

PWD:当前工作目录,绝对路径

还是看例子:

103c55e5f7b9def5d11a8a30be09a190.png

运行结果:

3927d0cbce6722d49bb8ae9521825bdb.png

shell 语句

1. if 语句

这个跟高级语言的 if - else - if 类似,只是格式有些不同而已,也来看个例子吧:

9e4b4723e8d996693102e634ef5bb1b0.png

2. for 循环

这是一个 for 循环基本使用例子,挺简单的,有点类似 Python:

3d15b1b669e9c4e90b44b3d61415dda6.png

运行结果:

1c9591d1e71229c62e85a48d6d0c362d.png

3. while 循环

注意与 for 循环的区别:

38023ebf0edfd12950aac929a1c13cb7.png

运行结果:

30ec031df7322e43dc6ef9e94c86fd60.png

shell命令应用:

其实我们打开的linux的终端也是一个shell,上面很多命令不用存到文件中也可以直接在终端运行;下面举例shell编程的运用;

1.利用循环批量生成命令,分别存储到不同的文件:

#注意:命令写成一行的时候用 ; 分隔不同语句块。

for i in xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan;do echo "perl /share/work/huangls/piplines/01./kegg_update_get_anno.pl $i $i.anno $i.fa" >$i.sh;done

2603466111fff31b630abc2e78ad6e4f.png

2.利用循环批量修改文件名:

这里我想把下面文件名字中红色字符批量删除:(这里需要提前学习字符截取)

988a8f49e451e1ccb5f703767936c3d0.png

命令示例如下:

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值