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表示没有错误,其他任何值表明有错误
分享到:
相关推荐
shell编程入门.docx
shell编程入门.pdf
Linux下的shell编程入门.pdf
【shell编程入门】 shell编程是Linux系统中一种强大的交互式命令解释器,它不仅用于用户与操作系统之间的交互,还能编写脚本程序实现自动化任务。在Linux环境中,shell扮演着用户界面和操作系统内核之间的桥梁角色...
这篇文档主要介绍了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实战及脚本编程...
linux命令行与shell脚本编程.pdf
Shell脚本编程学习入门:Shell编程基础.txt
.TCSH+shell+编程入门.docx
初学者入门教程: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循环及...
Linux Shell 编程快速入门.pdf