翻译:寒蝉退士译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务。原文:http://cm.bell-labs.com/7thEdMan/shell.bun摘要shell是提供到UNIX操作系统的接口的一个命令编程语言。它" />
搜档网
当前位置:搜档网 › Unix Shell 介绍

Unix Shell 介绍

Unix Shell 介绍
Unix Shell 介绍

Unix Shell 介绍(S. R. Bourne)

Unix Shell 介绍

S. R. Bourne

Bell 实验室Murray Hill, New Jersey 07974

">翻译:寒蝉退士

译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务。

原文:https://www.sodocs.net/doc/0c4074189.html,/7thEdMan/shell.bun

摘要

shell 是提供到UNIX 操作系统的接口的一个命令编程语言。它的特征包括控制流原语、参数传递、变量和字符串替换。还可获得如while、if then else、case 和for 这样的构造。在shell 和命令之间可以有双向通信。可以把字符串值参数、典型的文件名字和标志传递给命令。命令设置的返回值可用来决定控制流,而来自命令的标准输出可用作shell 输入。

shell 可以修改命令在其中运行的环境。输入和输出可以重定向到文件,可以调用通过“管道”通信的进程。通过按照可以由用户指定的顺序查找文件系统中的目录来找到命令。命令可以读取自终端或文件,这允许把命令过程存储起来以备将来使用。

November 12, 1978

1.0 介绍

1.1 简单命令

1.2 后台命令

1.3 输入输出重定向

1.4 管道线和过滤器

1.5 文件名生成

1.6 引用

1.7 提示

1.8 shell 和登录

1.9 总结

2.0 shell 过程

2.1 控制流- for 2.2 控制流- case 2.3 立即文档

2.4 shell 变量

2.5 test 命令

2.6 控制流- while 2.7 控制流- if

2.8 命令组合

2.9 调试shell 过程2.10 man 命令

3.0 关键字参数

3.1 参数传送

3.2 参数替换

3.3 命令替换

3.4 求值和引用

3.5 错误处理

3.6 故障处理

3.7 命令执行

3.8 调用shell

致谢

附录A - 文法

附录B - 元字符和保留字

1.0 介绍

shell 既是一个命令语言又是提供到UNIX 操作系统的接口的一个编程语言。这个备忘录用例子描述UNIX shell。第一章覆盖多数终端用户的日常需要。熟悉UNIX 对读本章是很有利的,否则可阅读如“UNIX for beginners”这样的文章。第2 章描述主要意图用在shell 过程中的那些特征。这包括shell 提供的控制流原语(primitive)和字符串值变量。在读本章的时候编程语言的知识将是有帮助的。最后一章描述shell 的更高级的特征。文中的“参见pipe (2)”引用的是UNIX 手册的一个章节。

1.1 简单命令

简单命令由一个或多个用空白分隔的字组成。第一个字是要执行的命令的名字;所有余下的字被作为传递给命令的实际参数。例如,

who

是打印用户登录的名字的一个命令。命令

ls -l

打印在当前目录中的文件的一个列表。实际参数-l 告诉ls 打印每个文件的状态信息、大小和建立日期。

1.2 后台命令

要执行一个命令,shell 通常建立一个新进程并等待它完成。可以执行一个命令而不用等待它完成。例如,

cc pgm.c &

调用C 编译器来编译文件pgm.c。尾随的& 是指示shell 不等待命令完成的一个操作符。为了跟踪这样一个进程,shell 在建立它之后报告它的进程编号。可以使用ps 命令来获得当前活跃进程的一个列表。

1.3 输入输出重定向

多数命令在最初连接到这个终端上的标准输出上生成输出。这个输出可以通过写操作发送到一个文件,例如,

ls -l >file

记号>file 由shell 来解释并且不作为一个实际参数传递给ls。如果文件不存在则shell 建立它;否则文件的最初内容被来自ls 的输出所替代。可以使用下面的记号把输出添加到一个文件

ls -l >>file

在这种情况下如果file 不存在则也建立它。

可以通过写操作使一个命令的标准输入接受自一个文件而不是终端,例如,

wc

命令wc 读它的标准输入(在这种情况下重定向自文件)并打印发现的字符、字和行的数目。如果只需要行的数目则可以使用

wc -l

1.4 管道线和过滤器

可以通过写‘管道’操作符| 把一个命令的标准输出连接到另一个命令标准输入上,如在

ls -l | wc

中以这种方式连接的两个命令组成一个管道线与下面的表述

ls -l >file; wc

除了未使用file 之外整体效果上等同。但这两个进程是用管道连接的(参见pipe (2))而且是并行运行。

管道是单向的,并通过当管道中没有东西可读的时候暂停wc 和当管道满的时候暂停ls 来实现同步。

过滤器是读它的标准输入,以某种方式转换它,并输出结果作为输出的命令。这样的一个过滤器如grep,从它的输入中选择出包含指定字符串的那些行。例如,

ls | grep old

打印来自ls 的输出中包含字符串old 的那些行,如果有的话。另一个有用的过滤器是sort。例如,

who | sort

将打印登录的用户的按字符排序的一个列表。

一个管道线可以由多于两个的命令组成,例如,

ls | grep old | wc -l

打印在当前目录中的文件名字中包含字符串old 的数目。

1.5 文件名生成

许多命令接受的实际参数是文件名字。例如,

ls -l main.c

打印与文件main.c 相关的信息。

shell 提供一种机制来生成匹配一个模式的文件名字的一个列表。例如,

ls -l *.c

生成在当前目录中的结束于.c 的所有文件名字,作为给ls 的实际参数。字符* 是匹配包括空串的任何字符串的一个模式。一般的模式可以指定如下。

*

匹配包括空串的任何字符串。

?

匹配任何单一字符。

[...]

匹配包围的字符中的任何一个。用减号分隔的一对字符匹配在词法上位于这两个字符之间的任何字符(含这两个字符)。

例如,

[a-z]*

匹配在当前目录中开始于a 到z 中的一个字母的所有名字。

/usr/fred/test/?

匹配在目录/usr/fred/test 中由一个单一字符组成的所有名字。如果没有找到匹配这个模式的名字,则把这个模式不做变动的作为实际参数传递。

这个机制对保存键入和依据某个模式选择名字二者都有用。它还用于查找文件。例如,

echo /usr/fred/*/core

找到并打印在/usr/fred 的子目录中所有core 文件的名字。(echo 是标准UNIX 命令,打印它的由空白分隔的实际参数)。最后的特征可能是昂贵的,它需要检索/usr/fred 的所有子目录。

对针对模式的一般规则有一个例外。在一个文件名字开始处的字符‘.’必须被显式的匹配。

echo *

将回显在当前目录中不以‘.’开始的所有文件名字。

echo .*

将回显以‘.’开始的所有文件名字。这避免了无意中匹配了名字‘.’和‘..’,它们分别意味着‘当前目录’和‘父目录’。(注意ls 抑制针对‘.’和‘..’的信息。)

1.6 引用

对shell 有特定意义的字符,如< > * ? | & 叫做元字符。在附录B 中给出元字符的一个完整列表。以\ 为前导的任何字符是被引用的并失去了它的特殊意义,如果有的话。删除\ 所以

echo \?

将回显一个单一?,并且

echo \\

将回显一个单一的\。为了允许长字符串在多于一行上延续,忽略序列\换行。

\ 便于引用单一字符。当多于一个字符需要引用的时候上述机制就是蠢笨的和错误的倾向。字符串可以通过用单引号包围来引用。例如,

echo xx'****'xx

将回显

xx****xx

引用的字符串不可以包含单引号但可以包含并保留换行。这种引用机制是最简单的并建议偶尔使用。

还有第三种引用机制使用双引号,它防止对一些但不是全部元字符的解释。详情参见 3.4 节。

1.7 提示

在从终端使用shell 的时候,在读一个命令之前它发出一个提示。缺省的这个提示是‘$’。可用下面的方法改变它,例如,

PS1=yesdear

设置提示为字符串yesdear。如果键入了换行并且需要进一步的输入,则shell 将发出提示‘>’。有时这是缺少引号所导致的。如果这是意外的则一次中断(DEL)将使shell 返回来读另一个命令。这个提示可以用下面的方法改变,例如,

PS2=more

1.8 shell 和登录

紧随login (1) 之后调用shell 来读取和执行在终端上键入的命令。如果这个用户的登录目录中包含文件.profile 则假定它包含命令并且在shell 从终端读取任何命令之前读取它。1.9 总结

ls

打印在当前目录中的文件的名字。

ls >file

把来自ls 的输出放置到file 中。

ls | wc -l

打印在当前目录中文件的数目。

ls | grep old

打印包含字符串old 的那些文件名字。

ls | grep old | wc -l

打印名字中包含字符串old 的那些文件的数目。

cc pgm.c &

在后台运行cc。

2.0 shell 过程

可以用shell 读取和执行包含在文件中的命令。例如,

sh file [ args ... ]

调用shell 来从file 读取命令。这样的文件叫做命令过程或shell 过程。实际参数可以提供给调用并在file 中用位置参数$1、$2、....来引用。例如,如果文件wg 包含

who | grep $1

sh wg fred

等价于

who | grep fred

UNIX 文件有三个独立的属性,读、写和执行。可以使用UNIX 命令chmod (1)来使文件可执行。例如,

chmod +x wg

将确保文件wg 有可执行状态。此后,命令

wg fred

等同于

sh wg fred

这允许shell 过程和程序被交替使用。在任何一种情况下都建立一个新进程来运行命令。

同为位置参数提供名字一样,在调用中位置参数的数目可获得为$#。被执行的文件的名字可获得为$0。

一个特殊的shell 参数是$* 被用来替换除了$0 之外的所有位置参数。它的典型用途是提供一些缺省实际参数,如在

nroff -T450 -ms $*

它简单的把那些给shell 的实际参数准备转给这个命令。

译注:shell 还有一个内置命令. file。它读这个文件中的命令并执行之。

2.1 控制流- for

shell 过程的一个常见用途是遍历(loop through)实际参数($1, $2, ...)并且对每一个实际参数执行命令一次。这样的一个过程的例子是tel 它查找包含如下行的文件/usr/lib/telnos

... fred mh0123 bert mh0789 ...

tel 的文本是

for i do grep $i /usr/lib/telnos; done

命令

tel fred

打印在/usr/lib/telnos 中包含fred 的那些行。

tel fred bert

打印包含fred 的行随后是包含bert 的行。

for 循环记号由shell 识别并有一般形式

for name in w1 w2 ... do command-list done

命令列表(command-list)是由换行或分号分隔或结束的一个或多个命令的一个序列。进一步,保留字如do 和done 只有紧随一个换行或分号之后才被识别。名字(name)是一个shell 变量,在每次执行do 后面的命令列表时它将被依次设置为字w1 w2 ...。如果省略了in w1 w2 ... 则为每个位置参数执行一次循环;就是说,假定为in $*。

使用for 循环的另一个例子是create 命令,它的文本是

for i do >$i; done

命令

create alpha beta

确保两个空文件alpha 和beta 存在并且是空的。使用记号>file 主动的建立一个文件或清除它的内容。还要注意在done 之前需要一个分号(或换行)。

2.2 控制流- case

case 记号提供一种多路分支。例如,

case $# in 1) cat >>$1 ;; 2) cat >>$2 <$1 ;; *) echo \'usage: append [ from ] to\' ;; esac

是一个append 命令。在调用时带有一个实际参数如

append file

$# 是字符串1 并使用cat 命令把标准输入复制到file 的末端。

append file1 file2

添加file1 的内容到file2 上。如果提供给append 的实际参数数目不是1 或2 则打印指示正确用法的一个消息。

case 命令的一般形式是

case word in pattern) command-list;; ... esac

shell 按模式(pattern)出现的次序对每个模式尝试匹配字(word)。如果找到一个匹配则执行相关的命令列表(command-list)并且case 的执行完成。因为* 是匹配任何字符串的模式它可以用作缺省情况。

一句警告: shell 不做检查来确保只有一个模式匹配case 实际参数。找到的一个匹配定义要执行的命令集。在下面的例子中在第二个* 之后的命令将永不执行。

case $# in *) ... ;; *) ... ;; esac

使用case 构造的另一个例子是区别一个实际参数的不同形式。下列的例子是cc 命令的一个片断。

for i do case $i in -[ocs]) ... ;; -*) echo \'unknown flag $i\' ;; *.c) /lib/c0 $i ... ;; *) echo \'unexpected argument $i\' ;; esac done

为了允许同一个命令与多于一个模式相关联,case 命令提供了由| 分隔的可选择的模式。例如,

case $i in -x|-y) ... esac

等价于

case $i in -[xy]) ... esac

使用普通的引用惯例所以

case $i in \?) ...

将匹配字符?。

2.3 立即文档

译注:here document 翻译成立即文档属于意译,参照寻址方式中立即寻址的先例。

在章节2.1 中shell 过程tel 使用文件/usr/lib/telnos 来为grep 提供数据。一种替代方式是在这个shell 过程中包含这些数据作为立即文档,如

for i do grep $i <

在这个例子中shell 接收在<

下面的过程edg 展示了文档在提供给grep 之前,要替换其中的参数。

ed $3 <<% g/$1/s//$2/g w %

调用

edg string1 string2 file

等价于命令

ed file <<% g/string1/s//string2/g w %

并在file 中把所有出现的string1 改变成string2。使用\ 引用特殊字符$ 来防止替换如

ed $3 <<+ 1,\$s/$1/$2/g w +

(这个版本的edg 除了ed 在没有字符串$1 出现时打印一个? 之外等同于第一个版本)。通过引用终结字符串可以完全防止在立即文档内的替换,例如,

grep $i <<\# ... #

文档被不加修改的提供给grep。如果在立即文档中不需要参数替换,后一种形式更有效率。

2.4 shell 变量

shell 提供字符串值的变量。变量名字开始于一个字母并由字母、数字和下划线组成。可以通过下列写法给出变量的值,例如,

user=fred box=m000 acct=mh0000

它向变量user、box 和acct 赋值。可以通过下列写法设置一个变量为空串,例如,

null=

通过把$ 前导于变量的名字来把它替换成变量的值;例如,

echo $user

将回显fred。

可以交互式的使用变量为经常使用的字符串提供简写。例如,

b=/usr/fred/bin mv pgm $b

将把文件pgm 从当前目录移动到目录/usr/fred/bin。对于参数(或变量)替换可以有一种更一般的记号,如

echo ${user}

它等价于

echo $user

并在参数名字后跟随着一个字母或数字的时候有用。例如,

tmp=/tmp/ps ps a >${tmp}a

将把ps 的输出定向到文件/tmp/psa,而

ps a >$tmpa

将导致替换变量tmpa 的值。

除了$? 下列都是由shell 作最初的设置。$? 在每次命令执行之后设置。

$?

最近执行的命令的退出状态(返回代码),是一个十进制数字符串。多数命令如果成功完成则返回一个零退出状态,否则返回一个非零退出状态。测试返回代码的值在以后的if 和while 命令中处理。

$#

位置参数的数目(十进制)。例如用在append 命令中检查参数的数目。

$$

这个shell 的进程编号(十进制)。因为过程编号在现存的进程中是唯一的,这个字符串经常用来生成唯一的临时文件名字。例如,

ps a >/tmp/ps$$ ... rm /tmp/ps$$

$!

在后台运行的最后的进程的编号(十进制)。

$-

当前的shell 标志,比如-x 和-v。

一些变量对shell 有特殊意义并应该避免作一般使用。

$MAIL

在交互使用的时候,shell 在发出提示之前察看这个变量指定的文件。如果指定的文件自从

上次察看之后已经被修改了,shell 在提示下一个命令之前打印消息you have mail。这个变量典型的在用户登录目录下的文件.profile 中设置。例如,

MAIL=/usr/mail/fred

$HOME

cd 命令的缺省实际参数。使用当前目录来解析不以/ 开始的文件名引用,并使用cd 命令变更它。例如,

cd /usr/fred/bin

使当前目录成为/usr/fred/bin。

cat wn

将在终端上打印在这个目录中的文件wn。命令。没有实际参数的cd 等价于

cd $HOME

这个变量典型的也在这个用户的登录.profile 中设置。

$PA TH

包含命令的目录的一个列表(查找路径)。shell 通过在这个目录列表中查找可执行文件来执行每个命令。如果未设置$PA TH 则缺省的查找当前目录、/bin 和/usr/bin。否则$PATH 由用: 分隔的目录名字组成。例如,

PA TH=:/usr/fred/bin:/bin:/usr/bin

指定以当前目录(在第一个: 之前的空串)、/usr/fred/bin、/bin 和/usr/bin 的次序查找。在这种方式下单个用户可以有他们自己‘专有’命令,可在当前目录下单独访问。如果命令名字包含一个/ 则不使用这种目录查找;对执行这个命令作一次单一的尝试。

$PS1

主要的shell 提示字符串,缺省是‘$’。

$PS2

在需要进一步输入时的shell 提示,缺省是‘>’。

$IFS

空白解释使用的字符集合(参见章节3.4)。

2.5 test 命令

test 命令尽管不是shell 的一部分,但意图由shell 程序使用。例如,

test -f file

译注: 在当前版本的shell 工具中,有一个与test 等同的命令[,它接受与test 一样的实际参数,但要求在实际参数列表的最后附加一个] 作为实际参数。上面的例子也可以写成

[ -f file ]

如果file 存在则返回零退出状态否则返回非零退出状态。通常test 计算一个谓词并返回这个结果作为退出状态。下面给出某些经常使用的test 实际参数,详细的规定请参见test (1)。test s

如果实际参数s 不是空串则为真

test -f file

如果file 存在则为真

test -r file

如果file 可读则为真

test -w file

如果file 可写则为真

test -d file

如果file 是目录则为真

2.6 控制流- while

for 循环的动作和case 分支由shell 可获得的数据决定。还提供while 或until 循环和if then else 分支,它们的动作由命令返回的退出状态决定。while 循环有一般形式

while command-list1 do command-list2 done

while 命令测试的值是紧随while 之后的最后的简单命令的退出状态。每轮循环都执行command-list1;如果返回一个零退出状态则执行command-list2;否则中止循环。例如,

while test $1 do ... shift done

等价于

for i do ... done

shift 是重命名位置参数$2, $3, ...为$1, $2, ... 并丢弃$1 的一个命令。

另一种while/until 循环的用法是等待直到某个外部的事件发生并接着运行某个命令。在until 循环中中止条件是反过来的。例如,

until test -f file do sleep 300; done commands

将循环直到file 存在。每轮循环都在再次尝试之前等待 5 分钟。(推测另一个进程最终会建立这个文件。)

2.7 控制流- if

还可以获得下面形式的一般的条件分支,

if command-list then command-list else command-list fi

它测试紧随if 之后的最后一个简单命令的返回值。

if 命令可以与test 命令联合使用来测试文件的存在如

if test -f file then process file else do something else fi

在2.10 节给出使用if、case 和for 构造的一个例子。

形如下面的多重测试if 命令

if ... then ... else if ... then ... else if ... ... fi fi fi

可以使用if 记号的一种扩展而写成

if ... then ... elif ... then ... elif ... ... fi

下列例子是改变一组文件的‘最近修改时间’的touch 命令。这个命令可以与make (1)联合使用来重新编译一组文件。

flag= for i do case $i in -c) flag=N ;; *) if test -f $i then ln $i junk$$; rm junk$$ elif test $flag then echo file \'$i\' does not exist else >$i fi esac done

在这命令中使用-c 来强制后面的文件如果不存在则建立之。否则,如果文件不存在,则打印一个错误消息。如果遇到-c 参数则把shell 变量flag 设置为非空字符串。命令

ln ...; rm ...

制作到这个文件的一个连接接着删除它,这导致更新最后的修改日期。

序列

if command1 then command2 fi

可以写成

command1 && command2

反过来,

command1 || command2

只在command1 失败时执行command2。在这些情况下返回值是最后的简单命令的返回值。

2.8 命令组合

可以用两种方式组合命令,

{ command-list ; }

( command-list )

第一个命令列表被简单的执行。第二种形式把命令列表作为一个单独的进程执行。例如,

(cd x; rm junk )

在目录x 中执行rm junk 而不改变调用shell 的当前目录。

命令

cd x; rm junk

有相同的效果但把调用shell 留在目录x 中。

2.9 调试shell 过程

shell 提供两种跟踪机制来帮助调试shell 过程。第一种在过程中调用为

set -v

(v 是verbose冗余)并导致打印过程的行,同读到的一样。这对分离语法错误有用。可以用

下列写法调用它而不用修改过程

sh -v proc ...

这里的proc 是shell 过程的名字。这个标志可以与-n 标志联合使用,它防止随后的命令执行。(注意在终端上的set -n 将放弃(render)终端不用直到键入一个文件结束符。)

命令

set -x

将产生执行跟踪。紧随参数替换之后按实际上执行的那样打印每个命令。(在终端上尝试一下这种效果)。通过如下表述来关闭这些标志

set -

而shell 标志的当前设置可以获得为$-。

2.10 man 命令

下面是用来打印UNIX 手册章节的man 命令。调用它的例子如下

$ man sh $ man -t ed $ man 2 fork

打印手册的第一章的sh。因为没有指定章节,使用第1 章。第二个例子将用打印机打印(-t 选项)手册章节ed。最后一个例子打印第二章的fork 手册页。

cd /usr/man : '冒号是注释命令' : '缺省是nroff ($N), 章节1 ($s)' N=n s=1 for i do case $i in [1-9]*) s=$i ;; -t) N=t ;; -n) N=n ;; -*) echo unknown flag \'$i\' ;; *) if test -f man$s/$i.$s then ${N}roff man0/${N}aa man$s/$i.$s else : 'look through all manual sections' found=no for j in 1 2 3 4 5 6 7 8 9 do if test -f man$j/$i.$j then man $j $i found=yes fi done case $found in no) echo \'$i: manual page not found\' esac fi esac done

图1. man 命令的一个版本

译注:在当前版本的shell 中把以‘#’开始的一行作为注释

3.0 关键字参数

可以通过赋值或在调用shell 过程的时候给出shell 变量的值。在命令名字之前的、给shell 过程的形如name=value 的实际参数,导致在过程开始之前把value 赋给name。这不影响调用shell 中的name 的值。例如,

user=fred command

执行command 并把user 设置为fred。-k 标志导致在实际参数列表中所有地方的形如name=value 的实际参数都按这种方式来解释。这种名字有时叫做关键字参数。如果有任何实际参数剩下则它们可以获得为位置参数$1, $2, ....

还可以使用set 命令在过程内设置位置参数。例如,

set - *

将设置$1 为在当前目录中的第一个文件名字,$2 为下一个,以此类推。注意第一个实际参数-,确保在第一个文件名字以- 开始时作出正确的处置。

3.1 参数传送

当调用一个shell 过程的时候可以同时提供位置和关键字参数。还可以通过预先指定某些参数是导出的,使一个shell 过程隐蔽的获得关键字参数。例如,

export user box

标记变量user 和box 为导出。在调用一个shell 过程的时候,在这个被调用的过程中制作所有可导出的变量的使用副本。在这个过程中对这些变量的修改不影响在调用shell 中的变量。一般而言,一个shell 过程不向调用者发出显式的请求就不能改变它的调用者的状态。(共享的文件描述符是这个规则的一个例外)。

值要保持不变的名字可以声明为readonly。这个命令的形式同于export 命令,

readonly name ...

后面的设置只读变量的尝试将是非法的。

3.2 参数替换

如果一个shell 参数未设置则把它替换成空串。例如,如果变量 d 未设置

echo $d

echo ${d}

将什么都不回显。缺省的字符串可以给出为

echo ${d-.}

如果变量d 设置了则回显它的值否则回显‘.’。使用常规的引用惯例求值缺省字符串所以

echo ${d-'*'}

表示如果变量d 未设置则回显*。类似的

echo ${d-$1}

表示如果变量d 的值未设置则回显这个值否则回显$1。使用如下记号向一个变量赋予一个缺省值

echo ${d=.}

它替换的字符串同于

echo ${d-.}

并且如果变量d 以前未设置则把它设置为字符串‘.’。(记号${...=...} 不适用于位置参数)。

如果没有合适的缺省则记号

echo ${d?message}

表示如果变量d 有值则回显它,否则shell 打印message 并且这个shell 过程的执行异常中止。如果空缺message 则打印一个标准消息。要求某些参数必须设置的shell 过程可以

如下面这样开始。

: ${user?} ${acct?} ${bin?} ...

冒号(:)是内置到shell 中的一个命令并且在求值了它的实际参数之后什么都不做。若变量user、acct 或bin 中任何一个未设置则shell 将中止这个过程的执行。

3.3 命令替换

来自命令的标准输出可以按类似于参数的方式进行替换。命令pwd 在它的标准输出上打印当前目录的名字。例如,如果当前目录是/usr/fred/bin 则命令

d=`pwd`

等价于

d=/usr/fred/bin

译注: 在当前版本的shell 中为命令替换增加了新的文法形式$(...),上面的例子也可以写成

d=$(pwd)

在重音号(`...`)之间的全部字符串被接受为要执行的命令并且由这个命令的输出所替代。除了使用\ 转义`之外,使用常规的引用惯例表述这个命令。例如,

ls `echo "$1"`

等价于

ls $1

在发生参数替换的所有上下文中都发生命令替换(包括立即文档),并且在两种情况下对结果的文档的处理是相同的。这个机制允许在shell 内使用字符串处理命令。这种命令的例子是basename,它从一个字符串删除指定的后缀。例如,

basename main.c .c

将打印字符串main。用来自cc 命令的一个片断来展示它的用途。

case $A in ... *.c) B=`basename $A .c` ... esac

将设置B 为$A 去除了后缀.c 的那部分。

下面是一些符合的例子。

·for i in `ls -t`; do ...

变量i 设置为按时间次序的文件名字,最新者最先。

·set `date`; echo $6 $2 $3, $4

将打印类似下面这样的字符串:1977 Nov 1, 23:59:59

3.4 求值和引用

shell 是向给命令的实际参数提供参数替换、命令替换和文件名生成的一个宏处理器。本节讨论这些求值发生的次序和各种引用机制的作用。

依据在附录A 中给出的文法初步的分析命令。在命令执行之前发生下列替换。

参数替换,例如$user

命令替换,例如`pwd`

只发生一次求值,所以如果变量X 的值是字符串$y 则

echo $X

将回显$y。

空白(blank)解释

紧随上述替换之后把结果的字符串分解成非空白的字(空白解释)。用做‘空白’的是字符串$IFS 的字符。缺省的,这个字符串由空格、tab 和换行组成。空串不作为一个字除非是被引用了。例如

echo ''

将传递这个空串作为给echo 的第一个实际参数。而

echo $null

如若变量null 未设置或被设置为空串则调用echo 而没有任何实际参数。

文件名字生成

接着在每个字中检索文件模式字符*、? 和[...] 并生成文件名字的一个按字母顺序的列表来替代这个字。每个这样的文件名字都是一个独立的实际参数。刚才描述的求值也在与for 循环关联的字的列表中发生。用于case 分支的字只发生替换。

与早先描述的使用\ 和'...'的引用同时存在的第三种引用机制使用双引号。在双引号内发生参数和命令替换但不发生文件名生成和空白解释。下列字符在双引号内有特殊意义并可以使用\ 来引用。

$

参数替换

`

命令替换

"

终结引用的字符串

\

引用特殊字符$ ` " \

例如,

echo "$x"

将传递变量x 的值作为给echo 的一个单一的实际参数。类似的,

echo "$*"

将传递位置参数作为一个单一的实际参数并等价于

echo "$1 $2 ..."

记号$@ 在除了被引用的时候之外都同于$*。

将传递未求值的位置参数到echo 并等价于

echo "$1" "$2" ...

下面的表格给出对于每种引用机制,进行求值的shell 元字符。

元字符

\ $ * ` " '

' n n n n n t

` y n n t n n

" y y n y t n

t 终结符y 解释n 不解释

图2. 引用机制

在要求多于一次字符串求值的情况下可以使用内置命令eval。例如,如果变量X 有值$y, 并且若y 有值pqr 则

eval echo $X

将回显字符串pqr。

一般的,eval 命令求值它的实际参数(与所有命令一样)并把这个结果作为给shell 的输入来对待。读这个输入并执行作为结果的命令。例如,

wg=\'eval who|grep\' $wg fred

等价于

who|grep fred

在这例子中,需要eval 的原因是替换之后不解释元字符如|。

3.5 错误处理

shell 检测到的错误的处理依赖于错误的类型和shell 是否被交互式使用。交互式shell 的输入和输出连接到终端上(由gtty (2) 决定)。用-i 标志调用的shell 也是交互式的。

命令的执行(参见3.7)可能由于下列原因而失败。

输入-输出重定向可能失败。例如,如果文件不存在或不能建立。

命令自身不存在或不能执行。

命令异常中止,例如,出现“总线错误”或“内存错误”。下面的图 2 列出的是UNIX 信号的完整列表。

命令正常中止但返回一个非零退出状态。

在所有这些情况下shell 将继续执行下一个命令。除了最后一种情况下shell 打印一个错误消息。所有余下的错误导致shell 从命令过程中退出。交互式shell 将返回来从终端读另一个命令。这样的错误包括如下。

语法错误如if ... then ... done

一个信号如中断。shell 等待当前的命令,如果有的话,完成执行并接着要么退出要么返回

任何内置命令如cd 的错误。

shell 标志-e 导致shell 在检测到任何错误的时候中止。

1

挂断

2

中断

3*

退出

4*

非法指令

5*

跟踪陷入

6*

IOT 指令

7*

EMT 指令

8*

浮点异常

9

杀死(不能被捕获或忽略)

10*

总线错误

11*

段违例

12*

给系统调用无效的实际参数

13

在没有读者的一个管道上写

14

定时时钟

15

软件中断(来自kill (1))

图3. UNIX 信号

标记星号的信号如果未捕获则生成一个内存转储(core dump)。但是,shell 自身忽略退出信号,它是可以导致内存转储的唯一的外部信号。这个列表中对shell 程序可能有用的是1、

2、3、14 和15。

3.6 故障处理

Shell 过程在从终端接收到信号的时候通常会中止。如果需要一些清除,比如删除一些临时文件,则可以使用trap 命令。例如,

trap 'rm /tmp/ps$$; exit' 2

为信号2 (终端中断)设置一个陷入,并且如果接收到这个信号则执行命令

rm /tmp/ps$$; exit

exit 是中止shell 过程执行的另一个内置命令。exit 是必须的,否则,在陷入发生之后,shell 将在被中断的位置上恢复执行过程。

UNIX 信号可以用三种方式处理。它们可以被忽略,在这种情况下信号永不发送到进程。它们可以被捕获,在这种情况下进程必须决定在收到信号的时候要做的动作。最后,它们可以被保留,导致进程中止而不做任何进一步动作。如果在进入shell 过程时把一个信号忽略了,例如,是在后台调用的(参见3.7 节),则忽略这个trap 命令(和信号)。

用下面的这修改版本的touch 命令展示trap 的用途(图4)。清除动作是删除文件junk$$。

flag= trap 'rm -f junk$$; exit' 1 2 3 15 for i do case $i in -c) flag=N ;; *) if test -f $i then ln $i junk$$; rm junk$$ elif test $flag then echo file \'$i\' does not exist else >$i fi esac done

图4. touch 命令

trap 命令出现在这个临时文件建立之前;否则进程有可能死去而未删除这个文件。

因为UNIX 中没有信号0,shell 使用它来指示从shell 过程中退出时要执行的命令。

过程自身可以通过指定空串作为给trap 的参数来选择忽略信号。下列片断取自nohup 命令。

trap '' 1 2 3 15

这导致hangup、interrupt、quit 和kill 被这个过程和调用的命令所忽略。通过如下表述重置陷入

trap 2 3

它把给信号2 和 3 的陷入重置为缺省值。可以通过如下表述获得陷入的当前值的一个列表

trap

过程scan (图5) 是使用trap 的一个例子,这里的trap 命令中没有exit。scan 取出在当前目录中的每个目录,提示出它的名字,接着执行在终端键入的命令,直到收到一个文件结束或中断。中断在执行要求的命令期间被忽略,而在等待输入的时候导致scan 中止。

d=`pwd` for i in * do if test -d $d/$i then cd $d/$i while echo "$i:" trap exit 2 read x do trap : 2; eval $x; done fi done

图5. scan 命令

read x 是从标准输入读入一行并把结果放置到变量x 中的一个内置命令。如果收到文件结束或中断则返回一个非零退出状态。

3.7 命令执行

要运行一个命令(除了内置命令),shell 首先使用系统调用fork 建立一个新进程。在命令执行之前,在子进程中建立这个命令的执行环境包括输入、输出和信号的状态。内置命令exec

Linux Bash Shell快速入门 在线教程

BASH 的基本语法 最简单的例子——Hello World! 关于输入、输出和错误输出 BASH 中对变量的规定(与C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 最简单的例子——Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解BASH。 用vi 编辑器编辑一个hello 文件如下: #!/bin/bash # This is a very simple example echo Hello World 这样最简单的一个BASH 程序就编写完了。这里有几个问题需要说明一下: 一,第一行的#! 是什么意思 二,第一行的/bin/bash 又是什么意思 三,第二行是注释吗 四,echo 语句 五,如何执行该程序 #! 是说明hello 这个文件的类型的,有点类似于Windows 系统下用不同文件后缀来表示不同文件类型的意思(但不相同)。Linux 系统根据"#!" 及该字串后面的信息确定该文件的类型,关于这一问题同学们回去以后可以通过"man magic"命令及/usr/share/magic 文件来了解这方面的更多内容。在BASH 中第一行的"#!" 及后面的"/bin/bash" 就表明该文件是一个BASH 程序,需要由/bin 目录下的bash 程序来解释执行。BASH 这个程序一般是存放在/bin 目录下,如果你的Linux 系统比较特别,bash 也有可能被存放在/sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或/usr/local/sbin 这样的目录下;如果还找不到,你可以用"locate bash" "find / -name bash 2> /dev/null" 或"whereis bash" 这三个命令找出bash 所在的位置;如果仍然找不到,那你可能需要自己动手安装一个BASH 软件包了。 第二行的"# This is a ..." 就是BASH 程序的注释,在BASH 程序中从“#”号(注意:后面紧接着是“!”号的除外)开始到行尾的多有部分均被看作是程序的注释。的三行的echo 语句的功能是把echo 后面的字符串输出到标准输出中去。由于echo 后跟的是"Hello World" 这个字符串,因此"Hello World"这个字串就被显示在控制台终端的屏幕上了。需要注意的是BASH 中的绝大多数语句结尾处都没有分号。 如何执行该程序呢?有两种方法:一种是显式制定BASH 去执行:

内分泌科考试试题及答案解析

内分泌科出科临床考试试题(一) 姓名毕业学校分数 一、单选题:每题2分 1.糖尿病是一组病因不明的内分泌代谢病,其共同主要标志是() A 多饮、多尿、多食 B 乏力 C 消瘦 D 高血糖 E 尿糖阳性 2.下述哪一项符合淡漠型甲亢() A.突眼征明显 B.心悸、多食、多汗、无力明显 C.甲状腺肿大明显 D.T4不增高,而只有T3增高 E.常见于老年人,易发生甲亢危象 3.内分泌系统的反馈调节是指: ( ) A.神经系统对内分泌系统的调节. B.内分泌系统对神经系统的调节 C.免疫系统对内分泌系统的调节; D.免疫系统对神经系统的调节; E.下丘脑一垂体一靶腺之间的相互调节 4.常用于内分泌功能减退的动态功能试验是: ( ) A.兴奋试验 B.抑制试验; C.激发试验 D.拮抗试验; E.负荷试验 5.1型糖尿病与2型糖尿病,最主要的区别在于() A 症状轻重不同 B 发生酮症酸中毒的倾向不同 C 对胰岛素的敏感性不同 D 胰岛素的基础水平与释放曲线不同 E 血糖稳定性不同 6.引起ACTH升高的疾病是: ( ) A.Sheehan综合征 B.肾上腺皮质腺瘤 C.Addison病 D.原发性醛固酮增多症 E.PRI 瘤 7.血中直接调节胰岛素分泌而且经常起调节作用的重要因素是 A 游离脂肪酸 B 血糖浓度 C 肾上腺素 D 胃肠道激素 E 血酮体浓度 8.Sheehan综合征患者各靶腺功能减退替代治疗应先补充: ( ) A.性激素 B.甲状腺激素 C.糖皮质激素 D.ACTH E.GnRH 9.对于慢性淋巴细胞性甲状腺炎的描述,以下哪项是错误的() A.可合并恶性贫血 B.多见于中年妇女 C.可伴有甲状腺功能亢进 D.可合并1型糖尿病 E.诊断明确,宜手术治疗 10.糖尿病性血管病变,最具有特征性的是()

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

内分泌系统讲解

内分泌系统 概述 内分泌系统endocrine system 是神经系统以外主导支配人体的另一套调节系统,由内分泌腺和内分泌组织构成。主要功能是与神经系统一起共同调节人体的新陈代谢、生长发育和生殖过程等生理功能的活动,以保持机体内环境的平衡与稳定。 内分泌腺属于无管腺,分泌物称激素hormone,直接进入血液或淋巴,随血循环运输至全身各处,调节各器官的活动。内分泌腺还有丰富的血液供应和植物神经分布,其结构和功能活动有显著的年龄变化。体内主要内分泌腺有脑垂体、松果体、甲状腺、甲状旁腺、肾上腺、性腺等。内分泌腺的体积和重量都很小,最大的甲状腺仅几十克;有的内分泌组织是一些细胞团,分散于某些器官内,如:胰岛、卵泡、黄体等。一种类型的激素只作用于特定的器官、组织或细胞,又称为靶器官、靶组织或靶细胞。 内分泌激素在通过细胞膜时,因细胞膜能感受细胞表面刺激作用,在穿越细胞膜过程中,激素同样以二种方式进行,一种方式被限制在蛋白质性质通道中(每一通道只允许一种分子或离子通过,如葡萄糖、氨基酸、钾、钠、钙、氯等受扩散梯度影响的被动运输以及依靠能耗的主动运输)经通道开关被穿膜运输;另一种方式是脂溶性物质如甾体激素等,直接穿越膜的脂类部分,不必通过蛋白质通道进入细胞内,靠细胞膜内陷形成的液泡“内吞泡”又叫胞吞泡方式进入细胞和“外排泡”又叫胞吐泡方式将内涵物释放到细胞外。细胞膜上带有多种多样的受体分子,只对某种刺激发生反应,如胰岛素、乙酰胆碱和低密度脂蛋白的受体;另一些受体则可被普通因子所激活,如与其它细胞或无机物表面接触,细胞表面受到刺激可造成跨膜电位的改变。激素在运动员生理代谢过程中为保证最大限度地动员体能、控制能量代谢、运动后体能恢复等均具有极大作用。血液中激素应维持正常水平,过多过少均会导致机体功能紊乱,甚至产生严重后果。各种激素分泌水平还受血液中代谢产物含量或其它激素浓度的影响与调节。 一、甲状腺 甲状腺thyroid gland是人体内最大的内分泌腺。位于第5颈椎至第1胸椎水平,既甲状软骨的中部和气管上段前面和两侧,分左、右两个侧叶,中间以峡部相连,呈粉红色“H”形,重约20—40克。少数人甲状腺峡缺如,半数人自峡部向上伸出一个细长的锥体叶,可延伸至舌骨处。 甲状腺富含血管,外包颈深筋膜,深入腺内将甲状腺实质分若干大小不同的团块或小叶。甲状腺实质有两类细胞组成,一类细胞为大小、形状不规则的甲状腺滤泡,滤泡表面围以单层立方上皮,每一滤泡中央为胶体(被伊红染成粉红色,含碘化球蛋白),即甲状腺球蛋白储存地。甲状腺滤泡位于细蜜的结缔组织之间,内含丰富的毛细血管和毛细淋巴管和交感神经纤维。甲状腺滤泡上皮细胞通过吐胞作用,入滤泡腔后形成甲状腺球蛋白,以此构成甲状腺激素三碘甲腺原氨酸(T3)和四碘甲腺原氨酸(T4)的前体。甲状腺滤泡细胞具有合成和胞吐甲状腺球蛋白(入滤泡腔)并释放甲状腺素(T3和T4)入毛细血管的作用。另一类细胞为滤泡旁细胞,靠近滤泡细胞外缘,比滤泡细胞大,形似卵圆或多边形,单个或小群分散出现在滤泡细胞之间,但不入滤泡腔。根据免疫化学研究泡内可能储存有甲状腺降钙素,用以调节血钙代谢。控制甲状腺降钙素释放的主要因子是血清钙浓度,血钙浓度升高可刺激降钙素的分泌,而低钙血症可抑制其分泌。 甲状腺的主要功能具有增进机体物质代谢,维持人体正常生长发育,尤其对骨骼和神经系统正常发育起着重要作用。甲状腺素分泌过旺,可引起功能亢进,造成眼突眼性甲状腺肿,简称为“甲亢”。表现为心跳加速、神经过敏、体重减轻、眼球突出等。儿童甲状腺素分泌不足

晶体结构解析基本步骤

晶体结构解析基本步骤 Steps to Crystallographic Solution (基于SHELXL97结构解析程序的SHELXTL软件,尚需WINGX和DIAMOND程序配合) 注意:每一个晶体数据必须在数据所在的目录(E:\STRUCT)下建立一子目录(如E:\STRUCT\AAA),并将最初的数据备份一份于AAA目录下的子目录ORIG,形成如右图所示的树形结构。 一. 准备 1. 对IP收录的数据, 检查是否有inf、dat和f2(设为sss.f2, 并更名为sss.hkl)文件; 对CCD 收录的数据, 检查是否有同名的p4p和hkl(设为sss.hkl)文件 2. 对IP收录的数据, 用EDIT或记事本打开dat或inf文件, 并于记录本上记录下相关数据(下面所说的记录均指记录于记录本上): ⊕从% crystal data项中,记下晶胞参数及标准偏差(cell);晶体大小(crystal size);颜色(crystal color);形状(crystal habit);测量温度(experiment temperature); ⊕从total reflections项中,记下总点数;从R merge项中,记下Rint=?.???? % (IP收录者常将衍射数据转化为独立衍射点后传给我们); ⊕从unique reflections项中,记下独立点数 对CCD收录的数据, 用EDIT或记事本打开P4P文件, 并于记录下相关数据: ⊕从CELL和CELLSD项中,记下晶胞参数及标准偏差; ⊕从CCOLOR项中,记下晶体颜色; 总点数;从CSIZE项中,记下晶体大小; ⊕从BRA V AIS和SYMM项中,记下BRA V AIS点阵型式和LAUE群 3. 双击桌面的SHELXTL图标(打开程序), 呈 4. New, 先在“查找范围”选择数据所在的文件夹(如E:\STRUCT\AAA), 并选择衍射点数据文件(如sss.hkl),?单击Project Open,?最后在“project name”中给一个易于记忆和区分的任务名称(如050925-znbpy). 下次要处理同一结构时, 则只需Project 在任务项中选择050925-znbpy便可 5. 单击XPREP , 屏幕将显示DOS式的选择菜单: ⊕对IP收录的数据, 输入晶胞参数后回车(下记为) (建议在一行内将6个参数输入, 核对后) ⊕在一系列运行中, 注意屏幕内容(晶胞取向、格子型式、消光规律等), 一般的操作动作是按。之后,输入分子式(如, Cu2SO4N2C4H12。此分子式仅为估计之用。注意:反应中所有元素都应尽可能出现,以避免后续处理的麻烦 ⊕退出XPREP运行之前,如果机器没有给出默认的文件名[sss],此时, 晶胞已经转换, 一定要输入文件名,且不与初始的文件名同名。另外,不要输入扩展名。如可输入aaa 6. 在数据所在文件夹中,检查是否产生有PRP、PCF和INS文件(PRP文件内有机器对空间群确定的简要说明) 7. 在第5步中若重新输入文件名, 则要重做第4步, 并在以后将原任务名称(如050925-znbpy)删除 8. 用EDIT 打开sss.ins文件,在第二~三行中,用实际的数据更改晶胞参数及其偏差(注意:当取向改变了,晶胞参数也应随之对应),波长用实际波长,更正测量温度TEMP ?? C)。?(单位已设为

高中生物知识点解析:内分泌系统

2019年高中生物知识点解析:内分泌系统【】2019年高中生物知识点解析:内分泌系统是查字典生物网为您整理的最新学习资料,请您详细阅读! 1、甲状腺: 位于咽下方。可分泌甲状腺激素。 2、肾上腺: 分皮质和髓质。皮质可分泌激素约50种,都属于固醇类物质,大体可为三类: ①糖皮质激素如可的松、皮质酮、氢化可的松等。他们的作用是使蛋白质和氨基酸转化为葡萄糖;使肝脏将氨基酸转化为糖原;并使血糖增加。此外还有抗感染和加强免疫功能的作用。 ②盐皮质激素如醛固酮、脱氧皮质酮等。此类激素的作用是促进肾小管对钠的重吸收,抑制对钾的重吸收,因而也促进对钠和水的重吸收。 ③髓质可分泌两种激素即肾上腺素和甲肾上腺素,两者都是氨基酸的衍生物,功能也相似,主要是引起人或动物兴奋、激动,如引起血压上升、心跳加快、代谢率提高,同时抑制消化管蠕动,减少消化管的血流,其作用在于动员全身的潜力应付紧急情况。 3、脑垂体: 分前叶(腺性垂体)和后叶(神经性垂体),后叶与下丘脑相连。前叶可分泌生长激素(191氨基酸)、促激素(促甲状腺激素、促肾上腺皮质激素、促性腺激素)、催乳素(199氨基酸)。后叶的激素有催产素(OXT)

和抗利尿激素(ADH)(升压素)(都为含9个氨基酸的短肽),是由下丘脑分泌后运至垂体后叶的。 4、下丘脑: 是机体内分泌系统的总枢纽。可分泌激素如促肾上腺皮质激素释放因子、促甲状腺激素释放激素、促性腺激素释放激素、生长激素释放激素、生长激素释放抑制激素、催乳素释放因子、催乳素释放制因子等。 5、性腺: 主要是精巢和卵巢。可分泌雄性激素、雌性激素、孕酮(黄体酮)。6、胰岛: a细胞可分泌胰高血糖素(29个氨基酸的短肽), b细胞可分泌胰岛素(51个氨基酸的蛋白质),两者相互拮抗。 7、胸腺: 分泌胸腺素,有促进淋巴细胞的生长与成熟的作用,因而和机体的免疫功能有关。 查字典生物网的编辑为大家带来的2019年高中生物知识点解析:内分泌系统,希望能为大家提供帮助。

几种常见晶体结构分析

几种常见晶体结构分析文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

几种常见晶体结构分析 河北省宣化县第一中学 栾春武 邮编 075131 栾春武:中学高级教师,张家口市中级职称评委会委员。河北省化学学会会员。市骨干教师、市优秀班主任、模范教师、优秀共产党员、劳动模范、县十佳班主任。 联系电话: E-mail : 一、氯化钠、氯化铯晶体——离子晶体 由于离子键无饱和性与方向性,所以离子晶体中无单个分子存在。阴阳离子在晶体中按一定的规则排列,使整个晶体不显电性且能量最低。离子的配位数分析如下: 离子数目的计算:在每一个结构单元(晶胞)中,处于不同位置的微粒在该单元中所占的份额也有所不同,一般的规律是:顶点上的微粒属于该 单元中所占的份额为18,棱上的微粒属于该单元中所占的份额为1 4,面上 的微粒属于该单元中所占的份额为1 2,中心位置上(嚷里边)的微粒才完 全属于该单元,即所占的份额为1。 1.氯化钠晶体中每个Na +周围有6个Cl -,每个Cl -周围有6个Na +,与一个Na +距离最近且相等的Cl -围成的空间构型为正八面体。每个Na +周围与其最近且距离相等的Na +有12个。见图1。 图1 图2 NaCl

晶胞中平均Cl-个数:8×1 8 + 6× 1 2 = 4;晶胞中平均Na+个数:1 + 12×1 4 = 4 因此NaCl的一个晶胞中含有4个NaCl(4个Na+和4个Cl-)。 2.氯化铯晶体中每个Cs+周围有8个Cl-,每个Cl-周围有8个Cs+,与一个Cs+距离最近且相等的Cs+有6个。 晶胞中平均Cs+个数:1;晶胞中平均Cl-个数:8×1 8 = 1。 因此CsCl的一个晶胞中含有1个CsCl(1个Cs+和1个Cl-)。 二、金刚石、二氧化硅——原子晶体 1.金刚石是一种正四面体的空间网状结构。每个C 原子以共价键与4个C原子紧邻,因而整个晶体中无单 个分子存在。由共价键构成的最小环结构中有6个碳原 子,不在同一个平面上,每个C原子被12个六元环共用,每C—C键共6 个环,因此六元环中的平均C原子数为6× 1 12 = 1 2 ,平均C—C键数为 6×1 6 = 1。 C原子数: C—C键键数= 1:2; C原子数: 六元环数= 1:2。 2.二氧化硅晶体结构与金刚石相似,C被Si代替,C与C之间插 氧,即为SiO 2晶体,则SiO 2 晶体中最小环为12环(6个Si,6个O), 图3 CsCl 晶 图4 金刚石晶

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的https://www.sodocs.net/doc/0c4074189.html,所做的一样,所不同的是,在DOS中,https://www.sodocs.net/doc/0c4074189.html,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh

高中化学选修三几种典型晶体晶胞结构模型总结

学生版:典型晶体模型 晶体晶体结构晶体详解 原子晶体金刚 石 (1)每个碳与相邻个碳以共价键结合, 形成体结构 (2)键角均为 (3)最小碳环由个C组成且六个原子不 在同一个平面内 (4)每个C参与条C—C键的形成,C原子 数与C—C键数之比为 SiO2 (1)每个Si与个O以共价键结合,形成正 四面体结构 (2)每个正四面体占有1个Si,4个“ 1 2O”,n(Si)∶ n(O)= (3)最小环上有个原子,即个O,个Si 分子晶体干冰 (1)8个CO2分子构成立方体且在6个面心又各 占据1个CO2分子 (2)每个CO2分子周围等距紧邻的CO2分子 有个 冰 每个水分子与相邻的个水分子,以相 连接,含1 mol H2O的冰中,最多可形成 mol“氢键”。 NaCl( 型)离子 晶体(1)每个Na+(Cl-)周围等距且紧邻的Cl-(Na+)有 个。每个Na+周围等距且紧邻的 Na+有个 (2)每个晶胞中含个Na+和个Cl- CsCl (型)(1)每个Cs+周围等距且紧邻的Cl-有个,每个Cs+(Cl-)周围等距且紧邻的Cs+(Cl-)有个(2)如图为个晶胞,每个晶胞中含个Cs +、个Cl-

金属晶体简单 六方 堆积 典型代表Po,配位数为,空间利用率52% 面心 立方 最密 堆积 又称为A1型或铜型,典型代表,配位 数为,空间利用率74% 体心 立方 堆积 又称为A2型或钾型,典型代表,配位 数为,空间利用率68% 六方 最密 堆积 又称为A3型或镁型,典型代表,配位 数为,空间利用率74% 混合晶体石墨(1)石墨层状晶体中,层与层之间的作用是 (2)平均每个正六边形拥有的碳原子个数是,C原子采取的杂化方式是 (3)每层中存在σ键和π键,还有金属键 (4)C—C的键长比金刚石的C—C键长,熔点比金刚石的 (5)硬度不大、有滑腻感、能导电

linu基础shell考试试卷

姓名___________联系方式__________ 中科院测试班linux-基础试卷 一、选择题 1.一个bashshell脚本的第一行是什么() A#!/bin/bashB.#/bin/bashC.#/bin/cshD./bin/bash 2.下面哪个命令是用来定义shell的环境变量() A、exportfsB.aliasC.exportsD.export 3.哪个命令可以将普通用户转换成超级用户() A.super B.passwd C.tar D.su 4.在vi编辑器里,命令"dd"用来删除当前的() A.行 B.变量 C.字 D.字符 5.在一行内运行多个命令需要用什么字符隔开() A.@ B.$ C.; D.* 6.按下()键能终止当前运行的命令 A.Ctrl-C B.Ctrl-F C.Ctrl-B D.Ctrl-D 7.显示用户的主目录的命令是什么?() A.echo$HOME B.echo$USERDIR C.echo$ENV D.echo$ECHO 12.在vi编辑器里,哪个命令能将光标移到第200行() A.g200 B.G200 C.:200 D.200g 8.以下哪个命令可以终止一个用户的所有进程() A.skillall B.skill C.kill D.killall 9vi中哪条命令是不保存强制退出() A.:wq B.:wq! C.:q! D.:quit 10.vi中复制整行的命令是() A.y1 B.yy C.ss D.dd 11.以下对于shell用户变量的定义,不对的是() A.g_Linux= B.LINUX=2.6.30 C 12.在终端里执行echo“currentpath:“‘`pwd`’“”结果是:() A.currentpath:/home/Linux B.current path:’/home/Linux’ C.currentpath:’`pwd`’ D.currentpath:`pwd` 二、填空题 1.对于目录间的切换,跳转到上一级目录使用(),切换到当前用户的家 目录() 2.需要删除目录xx_linux下的所有文件及目录,并无需提示逐一删除, 执行命令为() 3.终端里执行a=100;b=20;echo&[$a+$b];echo$a+$b;结果分别是() () 4.导出历史记录的最近20条记录到cmd.txt文本:() 5、vim进入text.c文件里。在插入模式下,想查找单词word,怎么进行 操作()。

生理题目第十一章 内分泌说课讲解

第十一章内分泌 一、名词解释 1.激素2.旁分泌 3.自分泌 4.神经分泌 5.靶细胞 6.允许作用 7.下丘脑调节肽 8.促激素 9.应急反应 lO.应激反应 二、填空题 1.按分子结构和化学性质,将激素可分为两大类,即———和———。 2.内分泌细胞分泌的信使分子称为——,其作用的细胞称为————。 3.下丘脑基底部的促垂体区神经元分泌下丘脑调节肽,经————运送到————调节其分泌功能。 4.内分泌腺分泌水平的相对稳定是通过——机制实现的。 5.生长素的主要作用是———和———。 6.由神经垂体释放的激素,其生物合成部位是——。 7.人幼年缺乏生长素将患——;成年后生长素分泌过多则出现———。 8.幼年时缺乏T3、T4将患——;成年后缺乏T3、T4将患—— 9.肾上腺皮质分泌的激素有———、———、和———。 10.糖皮质激素浓度升高可引起血液中中性粒细胞数目——,淋巴细胞数目——,嗜酸性粒细胞数目——。 11.应急反应和应激反应的主要区别在于,前者主要是——系统活动的增强,而后者则是——系统活动的增强。 12.血糖水平升高可引起胰岛素分泌———。

13.胰岛A细胞主要产生的激素是——,B细肥产生的主要是——,D细胞产生的主要是———。 14.维生素D,的活性形式是——。 15.甲状腺功能亢进时,血胆固醇水平———于正常。 16.当体内甲状腺激素含量增高时,心脏活动———。 17.调节体内钙、磷代谢的激素是——、———、和维生素D3 18.蛋白餐或静脉注射氨基酸可使胰岛素分泌————。 三、选择题 (一)A型题 1.血中激素浓度很低,而生理效应十分明显是因为 A.激素的半衰期长 B.激素的特异性强 C.激素作用有靶细胞 D.激素间有相互作用 E.激素有高效能放大作用 2.关于含氮类激素的正确描述是 A.分子较大,不能透过细胞膜 B.不易被消化酶所破坏,故可口服使用 C.可直接与胞质内受体结合而发挥生物效应 D.全部是氨基酸衍生物 E.用基因调节学说来解释其作用机制 3.第二信使cAMP’的作用是激活 A.DNA酶 B.磷酸化酶’ C.蛋白激酶 D.腺苷酸环化酶, E.磷酸二酯酶 4.下列哪种激素属于含氮激素 A.1,25-二羟维生素D3 B.雌二醇 C.睾酮 D.醛固酮 E.促甲状腺激素 5.神经激素是指

几种常见晶体结构分析.

几种常见晶体结构分析 河北省宣化县第一中学 栾春武 邮编 075131 栾春武:中学高级教师,张家口市中级职称评委会委员。河北省化学学会会员。市骨干教师、市优秀班主任、模范教师、优秀共产党员、劳动模范、县十佳班主任。 联系电话::: 一、氯化钠、氯化铯晶体——离子晶体 由于离子键无饱和性与方向性,所以离子晶体中无单个分子存在。阴阳离子在晶体中按一定的规则排列,使整个晶体不显电性且能量最低。离子的配位数分析如下: 离子数目的计算:在每一个结构单元(晶胞) 中,处于不同位置的微粒在该单元中所占的份额也有 所不同,一般的规律是:顶点上的微粒属于该单元中 所占的份额为18 ,棱上的微粒属于该单元中所占的份额为14,面上的微粒属于该单元中所占的份额为12 ,中心位置上(嚷里边)的微粒才完全属于该单元,即所占的份额为1。 1.氯化钠晶体中每个Na +周围有6个C l -,每个Cl -周围有6个Na +,与一个Na +距离最近且相等的 Cl -围成的空间构型为正八面体。每个N a +周围与其最近且距离相等的Na + 有12个。见图1。 晶胞中平均Cl -个数:8×18 + 6×12 = 4;晶胞中平均Na +个数:1 + 12×14 = 4 因此NaCl 的一个晶胞中含有4个NaCl (4个Na +和4个Cl -)。 2.氯化铯晶体中每个Cs +周围有8个Cl -,每个Cl -周围有8个Cs +,与 一个Cs +距离最近且相等的Cs +有6个。晶胞中平均Cs +个数:1;晶胞中平 均Cl -个数:8×18 = 1。 因此CsCl 的一个晶胞中含有1个CsCl (1个Cs +和1个Cl -)。 二、金刚石、二氧化硅——原子晶体 1.金刚石是一种正四面体的空间网状结构。每个C 原子以共价键与4 个C 原子紧邻,因而整个晶体中无单个分子存在。由共价键构成的最小 环结构中有6个碳原子,不在同一个平面上,每个C 原子被12个六元环 共用,每C —C 键共6个环,因此六元环中的平均C 原子数为6× 112 = 12 ,平均C —C 键数为6×16 = 1。 C 原子数: C —C 键键数 = 1:2; C 原子数: 六元环数 = 1:2。 2.二氧化硅晶体结构与金刚石相似,C 被Si 代替,C 与C 之间插氧,即为SiO 2晶体,则SiO 2晶体中最小环为12环(6个Si ,6个O ), 最小环的平均Si 原子个数:6×112 = 12;平均O 原子个数:6×16 = 1。 即Si : O = 1 : 2,用SiO 2表示。 在SiO 2晶体中每个Si 原子周围有4个氧原子,同时每个氧原子结合2个硅原子。一个Si 原子可形 图 1 图 2 NaCl 晶体 图3 CsCl 晶体 图4 金刚石晶体

Shell基本语法结构

☆掌握Shell的基本语法结构。 ☆学会编写并执行Shell脚本程序。 ☆学会在Linux下进行进程调度和作业调度 任务一学习变量与表达式 Shell是操作系统最外面的一层,负责管理用户与操作系统之间的交互,例如等待用户输入,向操作系统解释用户的输入,以及处理操作系统的各种输出结果。 除了作为命令解释器之外,Shell本身还是一个解释型的程序设计语言。Shell程序设计语言支持变量、表达式、函数和流程控制结构等,任何在终端能够执行的命令也放到Shell程序。 ● 4.1.1 变量 ●在Shell中有三种变量:系统变量、环境变量和用户变量。其中系统变量在对参数判 断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置,用户变量在编程过程中使用最多。 ●这几种变量的赋值方法各不相同,主要有:直接设置变量值、变量之间的置换、从 命令行参数获取、从环境变量获取和用户输入等几种方式。 ●引用变量一般采用“$variable”的形式引用变量variable的值。 1.系统变量 ●Shell常用的系统变量用于提供系统信息。系统变量一般采用命令行参数获取。 2.环境变量 ●Shell在开始执行前就已经定义了一些与系统工作环境有关的变量。 ●显示环境变量用echo命令。 ●在bash中,设置环境变量用set命令。用unset命令可将环境变量重新设置为系统 默认值,。 ●用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用 户的工作环境的设置可以在登录的时候由系统自动来完成。环境设置文件有两种:系统环境设置文件和用户环境设置文件。 ●

3.用户变量 ●不管系统变量和环境变量有多少,对于需求来说,总是不够的。用户常常需要自定 义一些变量,这些变量就称为用户变量。 ●定义用户变量的语法为: ●name=string ●局部变量与全局变量 Shell变量也有其规定的作用范围。局部变量的作用范围仅仅在其命令行所在的Shell 或Shell脚本文件中。全局变量的作用范围则包括本Shell进程及其所有子进程,即相当于环境变量,贯穿于整个当前用户环境。可以使用export命令将局部变量设置为全局变量。 export name=string ●【操作实例4.1】 用文本编辑器gedit编写一个Shell脚本test1.sh,显示执行脚本时输入的参数及参数总数目,并定义一个局部变量和一个全局变量。 4.1.2 表达式 Shell中的表达式分为算术运算表达式、关系与逻辑表达式和正则表达式等几种。 1.expr命令 ●expr命令的功能是求表达式的值。 2. 算术表达式 ●算术表达式可以是由运算符+、-、*、/、=组成的表达式。 3. 关系与逻辑表达式 ●命令test与方括号[ ]都用于进行条件测试,测试的结果返回逻辑值,即真true(0)和 假false(1)。test和[ ]可以相互替换。 ● ●

内分泌学练习试卷22

内分泌学练习试卷22 (总分:90.00,做题时间:90分钟) 一、 A1型题(总题数:45,分数:90.00) 1.引起地方性甲状腺肿最主要原因是 (分数:2.00) A.遗传 B.自身免疫 C.激素合成障碍 D.缺碘√ E.高碘 解析: 2.以下关于高脂蛋白血症的说法正确的是 (分数:2.00) A.Ⅴ型高脂蛋白血症以TC升高为主 B.ⅡB型高脂蛋白血症在临床上相当常见√ C.Ⅲ型高脂蛋白血症在临床上最常见 D.ⅡA型高脂蛋白血症在临床上罕见 E.Ⅰ型高脂蛋白血症在临床上较为常见 解析: 3.嗜铬细胞瘤手术前的药物应用,下列说法正确的是 (分数:2.00) A.术前常规应用β受体阻滞剂 B.α受体阻断药的应用一般不得少于2周√ C.因酚苄明作用时间长,故手术前3天宜停用 D.以上都不对 E.术前停用降压药,单用β受体阻滞剂 解析: 4.1型糖尿病患者的首位死亡原因是 (分数:2.00) A.酮症酸中毒昏迷 B.冠心病 C.脑血管病 D.感染 E.肾小球硬化症√ 解析: 5.甲亢服用抗甲状腺药物期间不宜做哪一项检查 (分数:2.00) A.BMR B.甲状腺131I摄取率√ C.TT3 D.TT4 E.TSH 解析: 6.关于维生素B1的论述说法错误的是 (分数:2.00) A.恶性肿瘤对维生素B1需求增加 B.大量饮酒能增加维生素B1代谢

C.喝大量咖啡能增加维生素B1的吸收√ D.喝发酵茶叶能减少维生素B1吸收 E.糖尿病病人对维生素Bl需求增加 解析: 7.甲状腺性甲亢最常见的是 (分数:2.00) A.多结节性甲状腺肿伴甲亢 B.自主性高功能性甲状腺瘤 C.弥漫性甲状腺肿伴甲状腺功能亢进症√ D.碘源性甲亢 E.滤泡性甲状腺癌 解析: 8.下列属于下丘脑激素的是 (分数:2.00) A.生长激素 B.促甲状腺激素 C.黄体生成素 D.生长激素释放激素√ E.促卵泡素 解析: 9.对确诊SLE和判断其活动性参考价值最大的抗体是 (分数:2.00) A.抗核抗体 B.抗dsDNA抗体√ C.抗Sm抗体 D.抗RNP抗体 E.抗Ro抗体 解析: 10.发生甲亢危象时,首先给予 (分数:2.00) A.大剂量碘剂 B.控制感染 C.抗甲状腺药物增量口服√ D.氢化可的松静点 E.普萘洛尔 解析: 11.Addison病患者,应用肾上腺皮质激素替代治疗,下列说法正确的是(分数:2.00) A.给药途径以肌注为主 B.应终生使用激素替代治疗√ C.有感染或手术时应停用 D.剂量一旦确定,终生不变 E.每日1次给药即可 解析: 12.X线检查对甲旁亢有诊断价值的是 (分数:2.00) A.骨密度改变 B.腰椎压缩性骨折 C.多处骨折

高中化学选修三几种典型晶体晶胞结构模型总结

高中化学选修三几种典型晶体晶胞结构模型总结 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

学生版:典型晶体模型 晶体晶体结构晶体详解 原子晶体金刚 石 (1)每个碳与相邻个碳以共价键结合, 形成体结构 (2)键角均为 (3)最小碳环由个C组成且六个原子不在 同一个平面内 (4)每个C参与条C—C键的形成,C原子 数与C—C键数之比为 SiO2 (1)每个Si与个O以共价键结合,形成正四 面体结构 (2)每个正四面体占有1个Si,4个“ 1 2O”, n(Si)∶n(O)= (3)最小环上有个原子,即个O,个Si 分子晶体干冰 (1)8个CO2分子构成立方体且在6个面心又 各占据1个CO2分子 (2)每个CO2分子周围等距紧邻的CO2分子 有个 冰 每个水分子与相邻的个水分子,以相连 接,含1 mol H2O的冰中,最多可形成 mol“氢键”。 NaCl( 型) 离子 晶体(1)每个Na+(Cl-)周围等距且紧邻的Cl-(Na+) 有个。每个Na+周围等距且紧邻的 Na+有个 (2)每个晶胞中含个Na+和个Cl- CsCl (型) (1)每个Cs+周围等距且紧邻的Cl-有个,每个Cs+(Cl-)周围等距且紧邻的Cs+(Cl-)有个(2)如图为个晶胞,每个晶胞中含个Cs+、 个Cl-

金属晶体简单 六方 堆积 典型代表Po,配位数为,空间利用率52% 面心 立方 最密 堆积 又称为A1型或铜型,典型代表,配位数 为,空间利用率74% 体心 立方 堆积 又称为A2型或钾型,典型代表,配位数 为,空间利用率68% 六方 最密 堆积 又称为A3型或镁型,典型代表,配位数 为,空间利用率74% 混合晶体石墨(1)石墨层状晶体中,层与层之间的作用是 (2)平均每个正六边形拥有的碳原子个数是,C原子采取的杂化方式是 (3)每层中存在σ键和π键,还有金属键 (4)C—C的键长比金刚石的C—C键长,熔点比金刚石的 (5)硬度不大、有滑腻感、能导电

Shell零基础学习

Shell脚本 1.Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 2.Linux 的 Shell 种类众多,常见的有: ?Bourne Shell(/usr/bin/sh或/bin/sh) ?Bourne Again Shell(/bin/bash) ? C Shell(/usr/bin/csh) ?K Shell(/usr/bin/ksh) ?Shell for Root(/sbin/sh) 由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像#!/bin/sh,它同样也可以改为#!/bin/bash。 #!告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。 3.echo 命令用于向窗口输出文本。 Shell变量 1.定义变量时,变量名不加美元符号($,PHP语言中变量需要) 变量名和等号之间不能有空格 变量名的命名须遵循如下规则: ?命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 ?中间不能有空格,可以使用下划线(_)。 ?不能使用标点符号。

?不能使用bash里的关键字(可用help命令查看保留关键字)。 2.使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,例如: your_name="qinjx" echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界;推荐给所有变量加上花括号,这是个好的编程习惯。 3.只读变量 使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 语法:readonly your_name 4.删除变量 使用 unset 命令可以删除变量。 语法:unset variable_name 变量被删除后不能再次使用。 unset 命令不能删除只读变量。 5.变量类型 运行shell时,会同时存在三种变量: ?1) 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell 启动的程序不能访问局部变量。 ?2) 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。 注:必要的时候shell脚本也可以定义环境变量。 ?3) shell变量 shell变量是由shell程序设置的特殊变量。 注:shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。 Shell字符串

shell基础知识

1,环境 Linux的Shell种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) 2,第一个shell 新建一个文件test.sh,扩展名为sh(sh代表shell) #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell 3,shell的运行 1)作为可执行程序 chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 一定要写成./test.sh,而不是test.sh,./test.sh告诉系统说,就在当前目录找 2)作为解释器参数 这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如: /bin/sh test.sh /bin/php test.php 这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。 4,shell变量 1)定义变量 your_name="https://www.sodocs.net/doc/0c4074189.html," 变量名不加美元符号,变量名和等号之间不能有空格 变量名的命名规则: Linux Shell 基础知识大全加入文库VIP 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 2)使用变量 your_name="qinjx" echo $your_name echo ${your_name} 加花括号是为了帮助解释器识别变量的边界,推荐给所有变量加上花括号 已定义的变量,可以被重新定义 your_name="tom" echo $your_name your_name="alibaba" echo $your_name 3)只读变量 myUrl="https://www.sodocs.net/doc/0c4074189.html,"

相关主题