shell脚本
2015-08-25 09:09
716 查看
shell为您提供了对UNIX系统的接口。向你收集的输入,并根据输入执行程序。当一个程序执行完毕后,它会显示该程序的输出。
shell是一个环境,我们可以运行我们的命令,程序和shell脚本。shell有不同的风格,就像有不同风格的操作系统。每个的shell的风格,有它自己的一套识别的命令和功能。
C shell.如果您使用的是C型的shell,默认的提示字符%。
再还有各种Bourne shell的子类别列示如下:Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
不同的C型shell如下:C shell ( csh)
TENEX/TOPS C shell ( tcsh)
原来的UNIX shell写于20世纪70年代中期,由斯蒂芬・伯恩,在新泽西AT&T贝尔实验室。Bourne shell 是第一个shell 出现在UNIX系统上,因此,它被称为 "the shell".Bourne shell的安装通常为 /bin/sh 在大多数UNIX版本。出于这个原因,它是编写脚本使用在几个不同的版本的UNIX shell。在本教程中,我们将要覆盖大多数基于传播Borne Shell概念。
变量是一个字符串,我们分配一个值。分配的值可以是一个数字,文本,文件名,设备,或任何其他类型的数据。变量是没有超过实际数据的指针。 shell,可以创建,分配和删除变量。
环境变量: 环境变量是一个变量所做的是任何子进程的shell。有些程序需要以正常的环境变量。通常一个shell脚本定义,只有那些环境变量所需要的程序没有运行。
Shell 变量: shell变量是一个特殊的变量,由shell设置,也是shell正常需要。一些合成变量环境变量,而其他局部变量。
本文出自 “听雨盼永恒” 博客,请务必保留此出处http://yongguang.blog.51cto.com/9153118/1687909
shell是一个环境,我们可以运行我们的命令,程序和shell脚本。shell有不同的风格,就像有不同风格的操作系统。每个的shell的风格,有它自己的一套识别的命令和功能。
Shell 提示符:
提示符下这就是所谓的命令提示符下$,发出shell。虽然会显示提示,您可以键入一个命令。shell读取输入后按Enter键。它决定了想要的命令和执行输入的第一个字符。一个字是一个完整的字符集。空格和制表符分隔单词。以下是一个简单的例子date命令显示当前日期和时间:$dateThu Jun 25 08:30:19 MST 2009你可以定制你的命令提示符下使用环境变量PS1环境教程解释。
Shell 类型:
在UNIX系统下有两种主要类型的shell:Bourne shell. 如果您使用的是Bourne类型的shell,默认提示符为$字符。C shell.如果您使用的是C型的shell,默认的提示字符%。
再还有各种Bourne shell的子类别列示如下:Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
不同的C型shell如下:C shell ( csh)
TENEX/TOPS C shell ( tcsh)
原来的UNIX shell写于20世纪70年代中期,由斯蒂芬・伯恩,在新泽西AT&T贝尔实验室。Bourne shell 是第一个shell 出现在UNIX系统上,因此,它被称为 "the shell".Bourne shell的安装通常为 /bin/sh 在大多数UNIX版本。出于这个原因,它是编写脚本使用在几个不同的版本的UNIX shell。在本教程中,我们将要覆盖大多数基于传播Borne Shell概念。
Shell 脚本:
shell脚本的基本概念是一个命令列表中列出的顺序执行。 #是shell脚本注释前面一英镑符号。条件测试,如值A大于B值,循环我们去通过大量的数据,读取和存储数据的文件和变量的读取和存储数据,该脚本可能包含的功能。shell脚本和函数都解释。这意味着他们不会被编译。我们将在接下来的几个教程写了许多脚本。这将是一个简单的文本文件,在其中,我们会把我们所有的命令和其他一些必要的结构,告诉shell环境做什么,什么时候做。示例脚本:
假设我们创建了一个test.sh脚本。注意:所有的脚本 .sh扩展。添加任何东西到脚本,需要提醒系统正在启动一个shell脚本。例如:#!/bin/sh这是告诉系统Bourne shell的执行下面的命令。这就是所谓的家shebang ,因为“#”符号被称为哈希,和!符号被称为bang。要创建一个包含这些命令的脚本,把shebang行第一,然后添加命令:
#!/bin/bashpwd ls
Shell 注释:
你可以把注释,在你的脚本如下:#!/bin/bash# Author : Zara Ali# Copyright (c) Tutorialspoint.com# Script follows here:pwd ls现在保存上面的内容,使此脚本可执行如下:
$chmod +x test.sh现在,你的shell脚本,可随时执行如下:
$./test.shThis would produce following result:
/home/amrood index.htm unix-basic_utilities.htm unix-directories.htm test.sh unix-communication.htm unix-environment.htm注:要执行任何程序在当前目录中,执行可使用 ./program_name
扩展Shell脚本:
Shell脚本有几个必要的结构告诉shell环境做什么,什么时候做。当然,大多数脚本是比上述更加复杂。shell毕竟,真正的编程语言,完成变量,控制结构,等等。无论脚本变得多么复杂,但是,它仍然是顺序执行的命令的列表。下面的脚本使用读命令从键盘输入,并将其分配给变量PERSON的值,并最终打印在stdout。#!/bin/sh# Author : Zara Ali# Copyright (c) Tutorialspoint.com# Script follows here:echo "What is your name?"read PERSON echo "Hello, $PERSON"下面是运行的脚本示例:
$./test.shWhat is your name?Zara AliHello, Zara Ali$shell变量
变量是一个字符串,我们分配一个值。分配的值可以是一个数字,文本,文件名,设备,或任何其他类型的数据。变量是没有超过实际数据的指针。 shell,可以创建,分配和删除变量。
变量名:
变量的名称可以包含只有字母(a到z或A到Z),数字(0~9)或下划线(_)。按照惯例,UNIX的shell变量将有自己的名称以大写字母。下面的例子是有效的变量名:_ALI TOKEN_A VAR_1 VAR_2以下是无效的变量名的例子:
2_VAR-VARIABLE VAR1-VAR2 VAR_A!不能使用其他字符,如!,*或 - 这些字符有特殊含义。
定义变量:
变量定义如下:variable_name=variable_value例如:
NAME="Zara Ali"上面的例子中定义的变量名和分配值“Zara Ali”。这种类型的变量被称为标量变量。一个标量变量只能容纳一个值一次。shell可以存储任何你想在一个变量的值。例如:
VAR1="Zara Ali"VAR2=100
访问值:
为了访问存储在一个变量的值,它的名字的前缀为美元符号($):例如,下面的脚本将访问的价值定义的变量名,将它打印在标准输出:#!/bin/shNAME="Zara Ali"echo $NAME这将产生以下值:
Zara Ali
只读变量:
shell提供了一种标记为只读变量使用的只读命令。后一个变量被标记为只读的,它的值不能被改变。例如,下面的脚本将给出错误提示,同时试图改变NAME的值:#!/bin/shNAME="Zara Ali"readonly NAME NAME="Qadiri"这个结果将产生以下如下:
/bin/sh: NAME: This variable is read only.
取消设置变量:
注销或删除的变量告诉shell删除的变量的变量列表做了跟踪。一旦您取消设置变量,你不可以访问存储在变量值。以下是使用unset命令定义一个变量的语法:unset variable_name上面的命令将取消设置定义的变量值。下面是一个简单的例子:
#!/bin/shNAME="Zara Ali"unset NAME echo $NAME上面的例子会不会打印出任何东西。不能使用unset命令取消定义的变量没有被标记为只读。
变量类型:
当一个shell运行,存在三种主要类型的变量:局部变量: 局部变量是一个变量所做的是在当前实例中的shell。这不是程序由shell开始。在命令提示符下设置。环境变量: 环境变量是一个变量所做的是任何子进程的shell。有些程序需要以正常的环境变量。通常一个shell脚本定义,只有那些环境变量所需要的程序没有运行。
Shell 变量: shell变量是一个特殊的变量,由shell设置,也是shell正常需要。一些合成变量环境变量,而其他局部变量。
本文出自 “听雨盼永恒” 博客,请务必保留此出处http://yongguang.blog.51cto.com/9153118/1687909
相关文章推荐
- Shell Step by Step (4) —— Cron & Echo
- 多个 echo 输出 不换行
- Linux shell 内部变量
- linux的环境变量文件enviroment 、profile、bashrc和bash_profile的区别
- bash脚本中比较字符串的方法
- linux-shell 让系统工作在英文环境下
- Note For Linux By Jes(7)-学习 shell scripts
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- mac shell 设置dns
- bash shell的基础特性之一
- bash shell基础特性之二
- Bash基础(1)
- [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理
- LeetCode:solution of shell problems
- shell 显示百分数
- shell 显示百分数
- [转] Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- Linux 下的shell快捷键
- Shell编程基础
- linux bash总结(二) 高级部分(适合初学者学习和非初学者参考)