shell脚本程序不是复杂的程序,它是按行解释的。脚本程序总是以
#!/bin/sh
开始,它通知shell使用系统上的Bourne shell解释器。其中#符号是注释。
脚本程序是从上到下执行的,运行脚本前需要改变该脚本程序的执行权限。确保正确建立脚本例径,只有
这样,脚本程序才能正确运行。
下面通过一个脚本程序示例来看shell是如何工作的。
Linux系统中有好多种不同的shell,但通常使用bash(bourne again shell)进行shell编程,因为bash是
免费的并且很容易使用。所以在本文中提供的脚本都是使用bash进行shell编程。和其他程序设计语言一
样,可使用任意一中编辑器来编写shell程序,比如nedit,kedit,Emacs,vi等。
但编辑好脚本程序后,要使脚本程序可执行,只需要改变脚本程序的权限,命令如下:
[root@barrymore /]chmod +x filename
然后,通过输入:
[root@barrymore /]./filename:
来执行程序。
下面是个简单的例子:
$vim firstscript
#!/bin/sh
echo "You are welcome to use bash."
echo "Current work directory is $PWD."
echo "You are $LOGNAME."
增加执行权限
$chmod +x firstscript
开始运行脚本程序:
$./firstscript
执行结果:
You are welcome to use bash.
Current work directory is /home/yangailin.
you are yangailin
环境变量与shell变量
为使shell变成更加有效,系统提供了一些shell变量。shell变量可以保存诸如路径名,文件名或者一个
数字这样的变量。从这点上可以得出一个结论:在shell编程中,变量至关重要。
下面有一些小的脚本程序来说明各种变量的使用。
1.显示变量
使用echo命令输出单个变量的值
$ hello="hello,world"
$ echo ${hello}
hello,world
$ ANOTHER=100
$ echo ${ANOTHER}
100
2.清除变量
使用unset命令清除变量
$ TMP_VAR=foo
$ echo ${TMP_VAR}
foo
$ unset TMP_VAR
$ echo ${TMP_VAR}
$
3.显示所有本地shell变量
使用set命令显示所有本地定义的shell变量
$ set
....
TERM=vt100
SHELL=bin/bash
set输出可能很长。查看输出时可以看出shell已经设置了一些用户变量以使工作环境更加容易使用
4.结合变量值
将变量结合在一起
echo ${variable-name1}${variable-name2}
$ TMP_VAR1="hello,"
$ TMP_VAR2="World"
$ echo ${TMP_VAR1}${TMP_VAR2}
hello,World
5.测试变量是否已经设置
有时要测试是否已设置或初始化变量。此命令格式为:
$ {variable:-value}
如果设置了变量值,则使用它;如果未设置,则取新值。例如
$ COLOUR=blue
$ echo 'This colour is ${COLOUR:-green}'
This colour is blue
变量colour取值blue,echo打印变量colour时,首先查看该变量是否已经赋值,如果查到,则使用该值。
现在清除该值,再来看看结果
$ unset COLOUR
$ echo 'This colour is ${COLOUR:-green}'
This colour is green
$ echo ${COLOUR}
$
上面的例子并没有实际值传给变量,需要使用下面的命令来完成此功能:
${variable:=value}
例如:
$ unset COLOUR
$ echo 'This colour is ${COLOUR:=green}'
This colour is green
$ echo ${COLOUR}
green
$
6.使用变量来保存系统命令参数
可以使用变量来保存系统命令参数的替换信息。
在下面的例子中使用变量保存文件复制件的文件名信息。变量source保存passwd文件的路径,dest保存
cp命令中的文件目标。示例如下:
$ SRC_FILE='/var/log/messages'
$ DST_FILE='/var/log/messages_1'
$ cp ${SRC_FILE} ${DST_FILE}
7.设置只读变量
如果想设置变量后不再改变其值,可以将该变量设置成只读方式。格式如下:
variable-name=value
readonly variable-name
下面的例子中,把变量设置成一个常量并将它设为只读,任何改变该变量值的操作都将返回错误信息。
$ MAXVAL=65535
$ echo ${MAXVAL}
65535
$ readonly MAXVAL
$ MAXVAL=32767
bash:MAXVAL:readonly variable
要查看所有只读变量,可使用只读命令:
$ readonly
declare -ir euid="0"
declare -r MAXVAL="65535"
declare -ir PPID="24109"
8.设置环境变量
VARIABLE-NAME=value
export VAROABLE-NAME
9.显示环境变量
$ MYSHELL='bash'
$ export MYSHELL
$ echo ${MYSHELL}
bash
$
使用env命令可以查看所有的环境变量
$ env
10.清除环境变量
使用unset命令可以清除环境变量
$ unset MYSHELL
$ echo ${MYSHELL}
$
11.set命令
在$ HOME.profile文件中设置环境变量时,还有另外一种方法导出这些变量。使用set命令-a选项,即
set -a指明所有变量直接被导出。不要在/etc/profile中使用这种方法,最好只在自己的$ HOME.profile
文件中使用。
$ cat yangailin.profile
set -a
MAIL='/var/spool/mail/yangailin'
PATH=$HOME:$PATH
12.将变量导出到子进程
shell新用户碰到的问题之一是任何把定义过的变量导出到子进程。其实根据前面讨论过的环境变量的工
作方式,只要使用export命令就可以。可以用脚本程序来实现,并在脚本中调用另一脚本。只要使用
export命令导出变量,就可以在任意的脚本中使用该变量,他们均将继承导出变量的所有权限。当然,不
可以将变量从子进程导出到父进程中,但可以通过重定向做到。
13.向系统命令传递参数
可以在脚本中向系统命令传递参数,下面的例子是,在find命令里使用$l 参数指定查找的文件名。
$ cat findfile
#!/bin/sh
find / -name $l -depth
$ ./findfile passwd
/etc/passwd
/etc/pam.d/passwd
/etc/uucp/passwd
/usr/bin/passwd
14.特定变量参数
既然已经知道了任何访问和使用shell脚本中的参数,就要必须知道脚本运行时的一些相关控制信息,共
有7个特定变量
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,次选项参数可超过九个
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
分享到:
相关推荐
Linux下的shell编程入门.pdf
虽然描述部分似乎与移动安全相关,但鉴于题目要求我们关注的是“shell编程入门.pdf”的内容,我们将重点放在Shell编程的基础概念、变量处理、命令执行以及流程控制等方面。 ### Shell编程概述 #### 1.1 什么是...
【shell编程入门】 shell编程是Linux系统中一种强大的交互式命令解释器,它不仅用于用户与操作系统之间的交互,还能编写脚本程序实现自动化任务。在Linux环境中,shell扮演着用户界面和操作系统内核之间的桥梁角色...
【Shell编程入门】 Shell编程是Linux/Unix系统中一种强大的命令解释器,它作为一个用户与操作系统之间的接口,允许用户输入并执行各种命令。在Linux环境中,可以安装多种Shell,如sh、csh、tcsh、zsh、ksh、pdksh...
这篇文档主要介绍了Shell编程的基础知识,包括其定义、脚本编写、运行、调试,以及核心语法如变量、条件判断和循环结构。 首先,理解**什么是Shell**至关重要。Shell是一个程序,它接收用户输入的命令并将其传递给...
SHELL编程入门,一小时从小白到入门--SHELL编程
CSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如 TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true 或false,TCSH的表达式与C语言中的表达式基本相同.
1Linux下Shell编程入门及变量讲解.mp4 2Linux下Shell编程入门及变量讲解.mp4 3Shell编程企业实战菜单系列.mp4 4Shell编程企业实战菜单系列.mp4 5Linux下LAMP实战及脚本编程思路讲解.mp4 6Linux下LAMP实战及脚本编程...
### Shell脚本专家指南Shell编程基础 #### 一、Shell编程概述 Shell是连接用户与操作系统的桥梁,它提供了一种交互式的方式让用户能够通过命令行界面与系统进行交互。Shell脚本则是一种用于自动执行一系列Shell...
初学者入门教程:Shell编程概述(一) 初学者入门教程:Shell编程概述(二) shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-...
1.Linux下Shell编程基础入门.mp4 2.Shell编程之变量及LAMP导航菜单编写.mp4 3.Shell编程之IF条件语句各种案例演练.mp4 4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及...
在使用windows shell扩张编程工具的过程中深切体会到windows shell技术资料的重要性,为此,根据Dino Esposito的《Visual C++ Windows Shell Programming》为蓝本,编译形成以下文字,为希望使用windows shell编程的...
本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell 编程可以让开发者更好地...
《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...
《shell编程入门教程》、《shell脚本专家指南》以及《UNIX.shell编程24小时教程》会提供详尽的实例和练习,帮助你巩固所学并深化理解。 总之,Shell编程是Linux/Unix环境中不可或缺的技能,它能够提高工作效率,...
shell 编程入门教程 shell 编程是 Linux 操作系统中的一个重要组件,它允许用户输入命令并将其执行, shell 编程有两种执行命令的方式:交互式(Interactive)和批处理(Batch)。在 shell 编程中,有变量、流程...