为了更好地理解,我们开始编写第一个shell脚本:“helloworld!”
在某个目录下,新建一个文件,取名“helloworld.sh”
- #!bin/sh
- echo "hello world!"
再修改这个程序的运行权限,具体操作如下:
运行:
运行方式有两种
一. 到那个文件夹下,输入如下语句。
- sh helloworld.sh
运行截图:
二. 到那个文件夹下,输入如下语句(它的必备条件是1.helloworld的路径设置正确,即这里的"#!bin/sh",2.helloworld.sh拥有运行权限)
- ./helloworld.sh
![](http://hi.csdn.net/attachment/201101/9/0_1294574962RFMz.gif)
问题解析:
1. sh的路径设置错误
查看helloworld.sh文件中的第一行是否为“#!bin/sh”
接下来尝试另一个例子:
- #!/bin/bash
- # This is a very simple example
- str="hello world!"(中间不能有空格)
- echo $str
我们看看每一句的意义:
第一行,#! 是说明 hello.sh 这个文件的类型的,有点类似 Windows 系统下用文件后缀来表示不同文件类型的意思。Linux 系统根据 "#!" 及该字串后面的信息确定该文件的类型。在 BASH 中 第一行的 "#!" 及后面的 "/bin/bash" 就表明该文件是一个 BASH 程序,需要由 /bin 目录下的 bash 程序来解释执行。BASH 这个程序一般是存放在 /bin 目录下。这一行的写法是固定的。
第二行的 "# This is a ..." 就是 BASH 程序的注释,在 BASH 程序中从“#”号(没有“!”号)开始到行尾的部分均被看作是程序的注释,相当于C/C++语言中的“//”。
第三行是为一个名称为 str 的变量赋值。
第四行的 echo 语句的功能是把 echo 后面的字符串或变量的内容输出到标准输出中去。需要注意的是 BASH 中的绝大多数语句结尾处都没有分号。
对于第三行,可能有人会问:在C/C++中,变量都属于某个类型,在这变量 str 的类型是什么呢?在 BASH 中变量定义是不需要的,没有 "int i" 这样的定义过程。如果想用一个变量,只要他没有在前面被定义过,就直接可以用,当然你使用该变量的第一条语句应该是对他赋初值了,如果你不赋初值也没关系,只不过该变量是空( 注意:是 NULL,不是 0 )。
关于变量的使用,要注意以下几点:
一,变量赋值时,“=”左右两边都不能有空格;
二,BASH 中的语句结尾不需要分号(";");
三,除了在变量赋值和在FOR循环语句头中,BASH 中的变量使用必须在变量前加"$"符号。 在比较详细的 bash 文档中,会规定使用变量要采用这样的形式:${STR},如果你的脚本出了莫名其妙的错误,不妨看看是不是这个问题造成的。
BASH 中的变量既然不需要定义,也就没有类型一说,那是不是一个变量既可以存放整数,也可以存放字符串呢?对!
一个变量即可以被定义为一个字符串,也可以被再定义为整数。如果对该变量进行整数运算,他就被解释为整数;如果对他进行字符串操作,他就被看作为一个字符串。