随笔分类 -  Shell脚本学习指南

Shell脚本编程自学笔记分享
摘要:Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。 同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重 阅读全文
posted @ 2019-01-08 10:58 Avention 阅读(195) 评论(0) 推荐(0)
摘要:一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址。 Shell中:变量可由字母数字和下划线组成,以字母或下划线开头。 命名:PATH=/sbin JAVA_HOME=”/usr/lib” (变量名区分大小写) 在shell中,变量的数据类型无需显式声明,变量的数据类型 阅读全文
posted @ 2019-01-08 10:57 Avention 阅读(5227) 评论(0) 推荐(0)
摘要:bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: cd /data/shell ./hello.sh 阅读全文
posted @ 2019-01-08 10:57 Avention 阅读(174) 评论(0) 推荐(0)
摘要:linux export 的作用 功能说明:设置或显示环境变量。 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 参 阅读全文
posted @ 2019-01-08 10:56 Avention 阅读(186) 评论(0) 推荐(0)
摘要:该选择编译型语言还是脚本编程语言,通常视应用程序的需求而定。脚本编程语言多半用于比编译型语言高级的情况,当你对性能的要求不高,希望尽快开发出程序并以较高级的方式工作时,也就是使用脚本编程语言的好时机。 Shell是UNIX系统中最重要、也是最广为使用的脚本语言。因为它的无所不在,而且遵循POSIX标 阅读全文
posted @ 2018-09-25 12:57 Avention 阅读(97) 评论(0) 推荐(0)
摘要:所谓的位置参数(positional parameters)指的也就是Shell脚本的命令行参数(command-line arguments)。在Shell函数里,它们同时也可以是函数的参数。各参数都由整数来命名。基于历史的原因,当其超过9,就应该用大括号把数字框起来: echo first ar 阅读全文
posted @ 2018-09-25 12:46 Avention 阅读(173) 评论(0) 推荐(0)
摘要:前文曾提过Shell会沿着查找路径 $PATH 来寻找命令。 $PATH 是一个以冒号分隔的目录列表,你可以在列表所指定的目录下找到所要执行的命令。所找到的命令可能是编译好的可执行文件,也可能是Shell脚本;从用户的角度来看,两者并无超别。 默认路径(defualt path)因系统而异,不过至少 阅读全文
posted @ 2018-09-22 21:13 Avention 阅读(147) 评论(0) 推荐(0)
摘要:UNIX 系统提供了两个对Shell编程特别有用的特殊文件。 第一个文件 /dev/null ,就是大家所熟知的位桶(bit bucket)。传送到此文件的数据都会被丢掉。换句话说,当程序将数据写入到此文件时,会认为它已经完成写入数据的操作,而实际上什么事都没做。如果需要的是命令的退出状态,而非它的 阅读全文
posted @ 2018-09-21 22:40 Avention 阅读(235) 评论(0) 推荐(0)
摘要:Shell提供了数种语法标记,用来修改默认 I/O 的来源端与目的端。 以 < 改变输入 program < file(s) 可将program的标准输入修改为file(s),允许将多个文件的内容作为程序的输入。 tr -d '/r' < my_dos_file.txt ... 以 > 改变输出 p 阅读全文
posted @ 2018-09-21 22:03 Avention 阅读(173) 评论(0) 推荐(0)
摘要:标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了。这个概念就是:程序应该有数据的来源端、数据的目的端以及报告问题的地方,它们分别被称为标准输入(standard input)、标准输出(standard output)以及标准错误输出(standard error)。程序 阅读全文
posted @ 2018-09-20 13:07 Avention 阅读(120) 评论(0) 推荐(0)
摘要:如同echo命令,printf命令可以输出简单的字符串: [many@avention my_sh]$ printf "Hello, world\n" Hello, world printf没有像echo提供一个换行符号。必须显式的将换行符号指定成\n。 printf命令的完整语法分为两部分: pr 阅读全文
posted @ 2018-09-19 22:32 Avention 阅读(148) 评论(0) 推荐(0)
摘要:echo的任务就是产生输出,可用来提示用户,或是用来产生数据供进一步处理。 原始的echo命令只会将参数打印到标准输出,参数之间以一个空格隔开,并以换行符号(newline)结尾。 [many@avention my_sh]$ echo Now is the time for all good me 阅读全文
posted @ 2018-09-19 22:30 Avention 阅读(186) 评论(0) 推荐(0)
摘要:变量(variable)就是为某个信息片段所起的名字,例如 first_name 或 driver_lic_no 。 所有程序语言都会有变量,Shell也不例外。每个变量都有一个值(value),这是由你分配给变量的内容或信息。在Shell的世界里,变量值可以是(而且通常是)空值,也就是不含任何字符 阅读全文
posted @ 2018-09-19 22:29 Avention 阅读(133) 评论(0) 推荐(0)
摘要:Shell最基本的工作就是执行命令。以互动的方式来使用Shell很容易了解一点:每键入一道命令,Shell就会执行。像这样: [many@avention test]$ cd my_sh ; ls -l *sh -rwxrw-r--. 1 many many 85 Feb 7 2018 10.sh 阅读全文
posted @ 2018-09-19 16:57 Avention 阅读(138) 评论(0) 推荐(0)
摘要:当Shell执行一个程序时,会要求UNIX内核启动一个新的进程(process),以便在该进程里执行所指定的程序。内核知道如何为编译型程序做这件事。我们的nusers Shell脚本并非编译型程序;当Shell要求内核执行它时,内核将无法做这件事,并回应“not executable format 阅读全文
posted @ 2018-09-17 12:15 Avention 阅读(178) 评论(0) 推荐(0)
摘要:让我们从简单的脚本开始。假设你行知道,现在系统上有多少人登录。who命令可以告诉你现在系统有谁登录: [many@avention Desktop]$ who many :0 2018-09-16 21:58 (:0) many pts/0 2018-09-16 21:58 (:0) 在大型的、多用 阅读全文
posted @ 2018-09-17 10:27 Avention 阅读(137) 评论(0) 推荐(0)
摘要:使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以 阅读全文
posted @ 2018-09-17 10:26 Avention 阅读(449) 评论(0) 推荐(0)
摘要:许多中型、大型的程序都是用编译型语言写成,例如Fortran、Ada、Pascal、C、C++或Java。这类程序只要从源代码(source code)转换成目标代码(object code),便能直接通过计算机来执行。Java就其本质来说也是解释型语言。 编译语言的好处是高效,缺点则是:它们多半运 阅读全文
posted @ 2018-09-17 10:25 Avention 阅读(215) 评论(0) 推荐(0)
摘要:Shell脚本最常用语系统管理工作,或是用于集合现有的程序以完成小型的、特定的工作。一旦你找出完成工作的方法,可以把用到的命令串在一起,放进一个独立的程序或脚本(script)里,此后只要直接执行该程序便能完成工作。此外,如果你写的程序很有用,其他人可以利用该程序当做一个黑盒(black box)来 阅读全文
posted @ 2018-09-17 10:24 Avention 阅读(96) 评论(0) 推荐(0)