怎么写shell程序( 二 )


脚本文件位置当设置了脚本权限之后 , 我们就能执行我们的脚本了:[[email protected] ~]$ ./hello_worldHello World!为了能够运行此脚本 , 我们必须指定脚本文件明确的路径 。如果我们没有那样做 , 我们会得到这样的提示:[[email protected] ~]$ hello_worldbash: hello_world: command not found为什么会这样呢?什么使我们的脚本不同于其它的程序?结果证明 , 什么也没有 。
我们的脚本没有问题 。是脚本存储位置的问题 。
我们了解到PATH 环境变量及其它在系统查找可执行程序方面的作用 。回顾一下 , 如果没有给出可执行程序的明确路径名 , 那么系统每次都会搜索一系列的目录 , 来查找此可执行程序 。
这个/bin 目录就是其中一个系统会自动搜索的目录 。这个目录列表被存储在一个名为PATH 的环境变量中 。
这个PATH 变量包含一个由冒号分隔开的目录列表 。我们可以查看PATH 的内容:[[email protected] ~]$ echo $PATH/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games这里我们看到了我们的目录列表 。
如果我们的脚本驻扎在此列表中任意目录下 , 那么我们的问题将会被解决 。注意列表中的第一个目录 , /home/me/bin 。
大多数的Linux 发行版会配置PATH 变量 , 让其包含一个位于用户家目录下的bin 目录 , 从而允许用户能够执行他们自己的程序 。所以如果我们创建了一个bin 目录 , 并把我们的脚本放在这个目录下 , 那么这个脚本就应该像其它程序一样开始工作了:[[email protected] ~]$ mkdir bin[[email protected] ~]$ mv hello_world bin[[email protected] ~]$ hello_worldHello World!它的确工作了 。
如果这个PATH 变量不包含这个目录 , 我们能够轻松地添加它 , 通过在我们的.bashrc 文件中包含下面这一行文本:export PATH=~/bin:"$PATH"当做了这个修改之后 , 它会在每个新的终端会话中生效 。为了把这个修改应用到当前的终端会话中 。
2.怎么写LINUX的SHELL在进行linux测试时编写脚本是必不可少的 , Shell脚本的名称可以随便定义 , 也不要什么后缀名 , 例如可以写abc,smartzip这类名称 , 运行时只要键入 ./smartzip就能运行脚本了 。
每行命令开头处不用就空格也行 。
第1部分. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序 。
在这个例子中我们使用/bin/sh来执行程序 。当编辑好脚本时 , 如果要执行该脚本 , 还必须使其可执行 。
要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释 在进行shell编程时 , 以#开头的句子表示注释 , 直到这一行的结束 。我们真诚地建议您在程序中使用注释 。
如果您使用了注释 , 那么即使相当长的时间内没有使用该脚本 , 您也能在很短的时间内明白该脚本的作用及工作原理 。1.1.3 变量 在其他编程语言中您必须使用变量 。
在shell编程中 , 所有的变量都由字符串组成 , 并且您不需要对变量进行声明 。要赋值给一个变量 , 您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆 , 比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd" , 而仅仅打印"this is the " , 因为shell会去搜索变量numnd的值 , 但是这个变量时没有值的 。