1、第一个shell脚本:
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),比如:hello.sh
#!/bin/bash
echo "Hello World !"
“#!” 是一个约定标记,告诉系统脚本需要什么解释器来执行,即使用哪一种Shell。
echo命令用于向窗口输出文本。
2、运行shell脚本
运行Shell脚本有两种方法:作为可执行程序和作为解释器参数。
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
##同运行其他二进制可执行程序一样,通过这种方式运行bash脚本,第一行#!/bin/bash一定要写对,好让系统查找到正确的解释器。
/bin/sh test.sh
/bin/php test.php
##这种方式运行的脚本,不需要在第一行指定解释器信息,因为/bin/sh就是脚本解释器,将脚本文件作为脚本解释器的参数。
3、一个例子:
使用read从stdin读取,并赋值给PERSON变量,然后输出到stdout:
#!/bin/bash
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
测试步骤:
- 创建文件read.sh
- 将上述代码写入文件read.sh
- 添加执行权限chmod +x read.sh
- 运行:./read.sh
- 从键盘输入,然后回车,看到打印消息。
4、shell变量:
4.1、定义变量:
注意事项:
- 变量名不加美元符号;
- 变量名和等号之间不能有空格。
- 变量名首字符必须为字母
- 变量名中间不能包含空格
- 变量名不能使用标点符号
- 变量名不能使用bash关键字,就像C编程不能使用C语言关键字一样。
myURL="http://see.xidian.edu.cn/cpp/linux/"
myNum=100
4.2、使用变量
使用一个变量只需要在变量前面加上美元符号即可;
变量外加上花括号是可选的,加花括号是为了帮助解释器识别变量的边界。
your_name="mozhiyan"
echo $your_name
echo ${your_name}
for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done
4.3、重新定义变量:
已定义的变量可以被重新定义,但是注意第二次定义的时候也不用添加美元符号,只有在使用时才添加;
myURL="http://see.xidian.edu.cn"
echo ${myURL}
myURL="http://see.xidian.edu.cn/cpp/"
echo ${myURL}
4.4、定义只读变量:
使用readonly命令可以将变量定义为只读变量,只读变量值不能被改变:
#!/bin/bash
myURL="http://see.xidian.edu.cn"
readonly myURL
myURL="http://see.xidian.edu.cn/cpp/"
运行脚本,结果如下:
This variable is read only .
4.5、删除变量:
- 使用unset命令可以删除变量;
- 被删除的变量不能再次使用;
- 但是unset命令不能删除只读变量。
#!/bin/sh
myURL="http://see.xidian.edu.cn"
unset myURL
echo $myURL
运行上述脚本没有任何输出。
5、变量类型:
运行shell时,会同时存在三种变量:
1) 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行