胖蔡说技术
随便扯扯

Shell脚本基础

一、shell类型

1)bash :BourneAgain Shell到缩写,内部命令40个,linux标准的内部(/bin/bash)
2)sh : Bourne Shell缩写,是Unix标准的shell((usr/bin/sh 或 /bin/sh)
3)ash:Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。
4)csh:csh是linux比较大到内核,有52个内部命令(/usr/bin/csh)
5)ksh:Korn Shell的缩写,共有42条内部命令(usr/bin/ksh)
6)Shell for Root(/sbin/sh)

二、shell的特点

Shell 是一个高级语言,Shell的特点有:
应用到很多系统上。因此,之所以要使用Shell脚本是基于:
  • 简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。
  • 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
  • 开发容易:可以在短时间内完成一个功能强大又妤用的脚本。
但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:
  1. 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)。
  2. 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)。
  3. 有跨平台(操作系统)移植需求(一般使用C 或Java)。
  4. 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。
  5. 对于影响系统全局性的关键任务应用。
  6. 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。
  7. 项目由连串的依赖的各个部分组成。
  8. 需要大规模的文件操作。
  9. 需要多维数组的支持。
  10. 需要数据结构的支持,比如链表或数等数据结构。
  11. 需要产生或操作图形化界面 GUI。
  12. 需要直接操作系统硬件。
  13. 需要 I/O 或socket 接口。
  14. 需要使用库或者遗留下来的老代码的接口。
  15. 私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。

三、shell语法

1)shell第一行的语法为#!开头加上脚本类型如:
#! /bin/bash //bash 脚本
#!/ bin/sh //sh 脚本
2)shell的三种基本命令
内建命令:由shell本身所执行的命令
shell函数:功能健全的一系列程序代码,以shell语言写成,他们可以像命令一样引用
外部命令:由shell副本(新的进程)所执行的命令:a、建立一个新的进程。b、寻找特定的shell命令。c、在新的进程中,以找到的新程序取代执行中的shell程序并执行。d、程序完成后,最初的shell会接着从终端读取下一条命令,或执行脚本里的下一条命令。
3)变量
1、变量名称的开头是一个字母或下划线符号,后接任意长度的字母、数字、下划线符号
2、定义与赋值:先定义一个变量名,然后接“=”后接字符,且‘=’号左右不可有空格。格式如’ username=”caihaifei” ‘,若想取出shell变量的值时,需要在变量名称前加上$字符,且如字符中含有空格,这字符必须使用” “或’ ‘将其引用起来。当需要取出变量时可用$var或${var}两种形式来表示,且${var}可使用在字符内部,为保证格式的统一与严谨,建议使用${var}来取出变量。
4)I/O输入和输出
1、输出:常见的输出方式有shell脚本的输出echo string 和模仿c库的printf string 输出(和c中的printf功能基本一致)
2、输入:常见的输入方式有read ,read可以通过键盘或文件将读取到的内容赋值给变量,若只有一个变量将会将所有内容复制,若多个变量则直到遇到一个文件结束或回车停止。
3、重定位和管道:’>’重定位标准输出符,设置输出源,’>>’重定位标准输出符,设置附加源,'<‘重定位标准输入符,设置输入源,重定位输出符号若当前输出源不存在,则会自动创建,’ | ‘为管道符号,命令格式为: program1 | program2 管道符号可以将program1的输出作为program2的输入.
4、特殊文件:/dev/null 即位桶(bit bucket),传送到此文件的数据都会被系统删除,读取该文件则会返回文件结束符号(end-of-file),/dev/tty 一个实体终端或串行端口,当程序打开此文件时,系统会自动将它重定向到一个终端再与程序结合。这在程序必须读取人工输入时特别有用。
5)执行跟踪
可通过在脚本文件中使用set -x打开执行跟踪功能,使用set +x关闭执行跟踪功能。
赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » Shell脚本基础
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏