linux shell 编程简谈

Shell简介

Linux 的 Shell 种类众多,常用的有:

  • (1) BourneShell(sh):是由AT&T Bell实验室的 Steven Bourne为AT&T的Unix开
    发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。
  • (2) BourneAgain Shell (即bash):是由由软件基金会(GNU)开发的一个Shell,它
    是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C
    Shell、Korn Shell等优点。
  • (3) ash:ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少
    的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。
  • (4) CShell(csh):是加州伯克利大学的Bill Joy为BSD Unix开发的,共有52个内部
    命令,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的
    用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与
    BourneShell并不兼容。该Shell其实是指向/bin/tcsh这样的一个Shell,也就是
    说,csh其实就是tcsh。
  • (5) KornShell(ksh):是AT&T Bell实验室的David Korn开发的,共有42 条内部命
    令,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。
    Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。
  • (6) zch:是Linux 最大的Shell之一,由Paul Falstad完成,共有84 个内部命令。如果只是一般的用途,没有必要安装这样的Shell。
    • 可以使用系统变量SHELL查看当前使用的shell:echo $SHELL
    • 也可以到/etc/shells文件里查看系统可以使用的shell

shell的交互方式

  • 脚本执行命令行编写
    编写脚本,文件后缀名一般为.sh
    文件必须以#!/bin/bash开头
    添加脚本的可执行权限 chmode +x 脚本名
  • 执行脚本:
    在当前目录下执行: ./脚本名
    在其他目录中执行:使用绝对路径
#!/bin/bash
#使用#注释,第一行是特殊存在
cd /
ls -al
:wq #存退出盘
chmod a+x 1.sh #修改权限,添加可执行权限
./1.sh #执行当前目录下的shell脚本

数学运算

  • 双引号中解释变量,解释转义字符
  • 单引号不解释变量、不解释转义字符
  • 反引号会执行当中的内容
  • 特殊字符要用反斜线转义:& * ?| $ ^
a=100
echo $[$a+10]
echo $[$a / 2]
echo $[$a * 2]
echo $[$a - 80]
echo $[10 % 2]
echo $((3 + 5))
echo $((10/2))
echo $((10/3)) 
echo $((10*3))
echo $((10%3))

let a=5+6
echo $a
let a+=10
echo $a
echo `expr 3 + 5` #也可以用expr进行计算

关系运算

运算符说明举例
-eq==,相等返回 true。[ $a -eq $b ] 返回 false。
-ne!=,不相等返回 true。[ $a -ne $b ] 返回 true。
-gt> ,如果是,则返回 true。[ $a -gt $b ] 返回 false。
-lt<,如果是,则返回 true。[ $a -lt $b ] 返回 true。
-ge>= ,如果是,则返回 true。[ $a -ge $b ] 返回 false。
-le<= ,如果是,则返回 true。[ $a -le $b ] 返回 true。

逻辑运算

运算符说明举例
&&逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||逻辑的 OR[[$a -lt 100|| $b -gt 100 ]] 返回 true

分支语句

a=100
if [ $a -gt 90 ];then
 echo "a>90"
else
 echo "a<=90"
fi

循环语句

  • for语句
for line in `cat 1.txt`;do
 echo $line
done
#读取⽬录列表
for file in ~/*;do
 echo $file;
done
  • while语句
sum=0
i=0
while [ $i -lt 10];do
 let sum+=$i
 let i+=1
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值