Shell与账号管理(四).docx

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Shell与账号管理(四)

学习Shell Scripts第一支script的撰写与执行Shell Scripts其实就是纯文字文件(ASCII),在script内所撰写的程序,会被一行一行地执行。假设这个程序文件名是shell.sh,可以这样执行档案:将shell.sh加上可读与执行(rx)的权限,然后就能够以 ./shell.sh来执行了;直接以sh shell.sh的方式来直接执行即可为何需要使用./shell.sh我们在bash里面强调,指令是否能够被执行与PATH这个环境变量有关,所以要执行【目前这个目录下的某个档案】就需要加上 ./这个目录啦。另外,你也可以将shell.sh放在家目录下的~/bin这个目录中,然后利用PATH=”$PATH”:~/bin的设定,就能够直接执行你的script了。为何sh shell.sh也可以执行呢?因为 /bin/sh其实就是/bin/bash,使用sh shell.sh就是告诉系统,我想要直接以bash的功能来执行shell.sh这个档案内的相关指令的意思。而我们也可以利用sh的参数,如-n及-x来检查与追踪shell.sh的语法是否正确。撰写第一支script现在先写一支script看看:上面的写法当中,我主要将整个程序的撰写分成数段,大致是这样:第一行#!/bin/bash在宣告这个script使用的shell名称:因为我们使用的是bash,所以必须要以【#!/bin/bash】来宣告这个档案内的语法使用bash的语法。当这个程序被执行时,它就能够加载bash的相关环境设定档,并且执行bash来使我们底下的指令能够执行。这很重要的!(在很多状况中,如果没有设定好这一行,那么系统可能无法判断该程序需要使用什么shell来执行)。程序内容的宣告:整个script当中,除了第一行的#!是用来宣告shell的之外,其它的#都是【批注】用途!所以上面的程序中,第二行以下就是用来说明整个程序的状态。一般来说,建议您一定要养成说明该script的:1.内容与功能;2.版本信息;3.作者与联络方式;4.建档日期;5.历史纪录等等。这将有助于未来程序的改写与debug!主要环境变量的宣告:建议务必要将一些重要的环境变量设定好,PATH是当中最重要的。如此,则可以让我们这支程序在进行时,可以直接下达指令,而不必写绝对路径。主要程序部分:就将主要的程序写好即可。在这个例子中,就是echo那一行啦!执行成果告知:我们在bash里面讨论一个指令的执行成功与否,可以使用$?这个变量来观察。那么也可以利用exit这个指令来让程序中断,并且回传一个数值给系统。本例中,exit 0代表离开script,并且回传一个0给系统。接下来执行看看结果是怎么:简单的shell script练习变量内容由使用者决定在bash的时候,我们学习到一个read指令。现在以read指令的用途,撰写一个script,它可以让使用者输入:1.first name与2.last name,最后并且在屏幕上显示:【Your full name is: 】的内容:将上面这个sh02.sh执行一下,你就能够发现使用者自己输入的变量可以被取用。利用 date进行档案的建立举例:我想要建立三个空的档案,档名最开头由使用者输入决定,假设使用者输入filename,那今天的日期是2005/08/23,我想要以前天、昨天、今天的日期来建立这个档案,亦即filenamefilenamefilename该如何是好?数值运算的方法我们可以使用declare来定义变量的类型,这样才能进行加减运算!可是,bash shell里头预设仅支持到整数的数据。如果我们要使用者输入两个变量,然后将两个变量的内容相乘,最后输出相乘的结果,可以这样做:在数字的运算上,我们可以使用【declare-i total=$firstnu*$secnu】,也可以使用上面的方式来进行!基本上,鸟哥比较比较建议使用这样的方式来进行运算:var=$((运算内容))利用test指令的测试功能进行判断当我要检测系统上面某些档案或者是相关的属性时,利用test这个指令来工作,是最好不过了。如,要检查/dmtsai是否存在时,使用:执行结果并不会显示任何讯息,但是我们可以透过$?或及||来展现整个结果!上面的例子可以改写成这样:如果还想要测试一下该档名是啥玩意时,还有哪些标志可以来判断的呢?现在我们就利用test来帮我们写几个简单的例子。首先判断一下,让使用者输入一个档名,我们判断:这个档案是否存在,若不存在则给予一个【Filename does not exist】的讯息,并中断程序;若这个档案存在,则判断它是个档案或目录,结果输出【Filename is re

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档