本文介绍了如何创建并运行shell脚本以及如何在脚本文件中使用shell。本文包括如下的内容:
创建和运行 shell 脚本
在 Korn 或 Posix shell 上运行多后台进程
为脚本文件指定 Shell
1.创建和运行 shell 脚本
shell 脚本提供了一种用来执行冗长的命令、大型或复杂的命令序列以及例程任务的简单方法。shell 脚本是包含一个或多个命令的文件。输入 shell 脚本文件的名字后,系统会执行文件中所包含的命令序列。
可以使用文本编辑器来创建一个 shell 脚本。脚本文件既可以包含操作系统的命令,也可以包含 shell 的内置命令。
以下的步骤是用来编写 shell 脚本文件的常规方针:
(1)使用文本编辑器,创建并且保存一个文件。可以在 shell 脚本文件中包含 shell 命令和操作系统命令的任意组合。根据约定,设置为不为许多用户来使用的 shell 脚本文件将存放在 $HOME/bin 目录中。
注:操作系统并不支持在 shell 脚本文件内的 setuid 或者 setgid 子例程。
(2)要只允许所有者运行(或者执行)文件,使用 chmod 命令。例如,如果文件名为 script1,请输入:
chmod u=rwx script1
之后按下 Enter(回车)键。
(3)在命令行上输入脚本文件名,运行 shell 脚本文件。如果要运行 script1 shell 脚本文件,请输入:
script1
之后按下 Enter(回车)键。
注:如果是在命令行上,shell 命令(ksh、bsh 或者 csh)在 shell 脚本文件名之前,则可以运行指定的 shell 脚本文件而不需要使它的权限为可执行。
例如,要在 korn shell 控制下运行名为 script1 的非可执行脚本文件,可以输入:
ksh script1
2.在 Korn shell或者 Posix shell 上运行多后台进程
Korn shell 或着 POSIX shell 允许运行一个或者多个命令作为后台的进程。这些在 shell 脚本文件内运行的命令被称为协进程。
通过在命令后面放置 |& 运算符可以指定一个协进程。命令的标准输入和输出均被管道传输到脚本文件。
协进程必须满足以下设定的约束:? 每条消息的尾部必须包含一个换行符
? 将所有输出消息发送到标准输出
? 每条消息后面清空标准输出
下面的例子显示了输入如何被传输给协进程并且由协进程返回。
echo "Initial process"
./FileB.sh |&
read -p a b c d
echo "Read from coprocess: $a $b $c $d"
print -p "Passed to the coprocess"
read -p a b c d
echo "Passed back from coprocess: $a $b $c $d"
FileB.sh
echo "The coprocess is running"
read a b c d
echo $a $b $c $d
结果标准输出如下面所示:
Initial process
Read from coprocess: The coprocess is running
Passed back from coprocess: Passed to the coprocess
如果要写到协进程,请使用 print -p 命令。如果要从协进程读出,请使用 read -p 命令。
3.为脚本文件指定 Shell
可以在 shell 脚本文件中包含 shell,从而在指定的 shell 里运行 shell 脚本文件。
如果要在指定的 shell 下运行可执行的 shell 脚本文件,在 shell 脚本文件的第一行中输入 #!Path,然后按下 Enter(回车)键。
#! 字符表明文件类型。Path 变量指定运行 shell 脚本文件的 shell 的路径名。
例如,要在 Bourne shell 下运行 bsh 脚本文件,请输入:
#!/usr/bin/bsh
按下 Enter(回车)键。
原文链接: |