热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>Shell开发>

shell是什么

来源: 作者: 时间:2007-04-10 Tag: 点击:

4>位置变量或Shell参数

  在shell解释用户的命令时,将把命令行的第一个字作为命令,而其他的字作为参数。当命令对应的可执行文件为Shell程序时,这些参数将作为位置变量传送给该程序。第一个参数记为,第二个为....第九个为。其中1到9是真正的参数名,"$"符只是用来标识变量的替换。

  位置变量指命令对应的可执行文件名。在后面将详细介绍位置变量。

  1.只读变量

  用户将变量赋值后,为了防止以后对该变量的修改,可以用以下命令将该变量设置为只读变量:

    readonly variable

  2.export命令

  shell执行一个程序时,首先为该程序建立一个新的执行环境,称为子shell。在Bourne Shell中变量都是局部的,即他们只在创建他们的Shell中有意义。用户可以用export命令让变量被其他子Shell识别。但某用户的变量是没法让其他用户使用的。

  当用户启动一个新shell时,该shell将使用默认的提示符。因为赋给变量PS1的值只在当前shell中有效。为了让子Shell使用当前Shell中定义的提示符号,可以使用export命令:

    $PS1="Enter command:"
    Enter command:export PS1
    Enter command:sh
    Enter command:

    此时变量PS1变成了全局变量。它可以被其子Shell使用。当变量被设置成全局的以后,将一直保持有效直到用户退出该变量所在的Shell。用户可以在文件.profile中给一个变量永久赋值。详见"规范Shell"。

基本语句

  从本节起,我们将详细介绍Shell程序设计的基本知识,通过编写Shell脚本,用户可以根据自己的需要有条件的或者重复的执行命令。通过Shell程序,可以把单个的UNIX命令组合成一个完全实用的工具,完成用户的任务。

  1>什么是Shell程序

  当用户在UNIX Shell中输入了一条复杂的命令,如:

    $ls -R /|greo myname |pg

  我们可以称用户在对Shell编程,当把这条语句写在一个文件里,并且符给该文件可执行权限,那么该文件就是我们传统上说的Shell程序。

  2>简单的Shell程序

  假设用户每天使用下述命令备份自己的数据文件:

    $cd /usr/icewalk;ls * |cpio -o > /dev/fd0

  我们可以把它写在一个文件,如:ba.sh中:

    $cat >ba.sh
    cd /usr/icewalk
    ls * |cpio -o > /dev/fd0
    ^D  (ctrl_d)

  程序ba.sh就是Shell脚本,用户可以用vi或其他编辑工具编写更复杂的脚本。

  此时用户备份文件只需要执行Shell程序ba.sh,执行时需在当前Shell中创建一个子Shell:

    $sh ba.sh

  程序sh与用户登陆时执行的Bourne Shell相同,但当Sh命令带参数ba.sh后,它将不再是一个交互式的Shell,而是直接从文件ba.sh中读取命令。

  执行ba.sh中命令的另一方法是给文件ba.sh执行权限:

    $chmod +x ba.sh

  此时,用户可以输入文件名ba.sh做为一个命令来备份自己的数据,需要注意的是,用这种方法执行命令的时候,文件ba.sh必须存在于环境变量$PATH所指定的路径上。


最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册