shell教程三:基本语法

来源:互联网 发布:sql count用法详解 编辑:程序博客网 时间:2024/05/20 09:21

shell教程三:基本语法

1.1、shell文件开头

shell文件必须以下面的行开始(必须方在文件的第一行): 
#!/bin/sh 
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 

当让还可以使用

>>>whereis sh    来查找sh的位置 除了sh 还有bash 、csh、nologin
当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 
要使脚本可执行:
运行

>>>chmod +x 脚本名         这样才能用./filename 来运行

1.2 注释 

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。
如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用
及工作原理。

1.3 变量 

在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明,直接赋值就可以,应用变量的话,用$+变量名的形式。
要赋值给一个变量,您可以这样写: 
a="hello world" 
现在打印变量a的内容: 
echo "A is:" 
echo $a 
有时候变量名很容易与其他文字混淆,比如: 
num=2 
echo "this is the $numnd" 
这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,
但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: 
num=2 
echo "this is the ${num}nd" 
这将打印: this is the 2nd

1.4 环境变量

由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录
脚本中使用环境变量。


>>>概念: 管道, 重定向和 backtick 


管道 (|): 将一个命令的输出作为另外一个命令的输入。 
grep "hello" file.txt | wc -l 
在file.txt中搜索包含有”hello”的行并计算其行数。 

在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。 


重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。
> 写入文件并覆盖旧文件 
>> 加到文件的尾部,保留旧文件内容。
反短斜线 
使用反短斜线("`")可以将一个命令的输出作为另外一个命令的一个命令行参数。
命令: 
find . -mtime -1 -type f -print 
用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。


如果您想将所有查找到的文件打一个包,则可以使用以下脚本: 
#!/bin/sh 
# The ticks are backticks (`) not normal quotes ('): 
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 
1 0