1. 一个实例:
输入命令vim first,创建一个first文件并用vim打开,输入如下代码:
#!/bin/sh echo "hello world"
说明:
1. #符号开始的行为注释,第一行#!/bin/sh是一种特殊形式的注释,告诉系统同一行上紧跟在它后面的那个参数是用来执行脚本文件的程序。
2. 脚本文件的执行:
法一,将文件名作为参数传给shell,即
$/bin/sh first
法二,为文件设置执行权限,然后执行,即
chmod +x first
./first
2. shell语法
2.1 变量
在shell中,通过使用变量来创建它们;
在默认情况下,所有变量都被看作字符串并以字符串来存储,即使它被赋值为数值时也是如此;
通过在变量名前加一个$符号来访问它的内容;
可以使用read命令将用户的输入赋值给一个变量;
如果把$变量表达式放在双引号中,程序执行到这一行时会把变量替换为它的值,如果放在单引号中,则不会发生替换;
可以在$前添加\以显示$字符
#!/bin/sh myvar="Hi there" myvar2=2+3 echo $myvar echo $myvar2 echo "$myvar" echo ‘$myvar‘ echo \$myvar exit 0
注意:字符串里如果包含空格,则必须用引号将它们括起来;
等号两边不能有空格
运行结果:
root@ubuntu:/mnt/hgfs/code_self# ./first Hi there 2+3 Hi there $myvar $myvar
环境变量:
当一个shell脚本程序开始执行时,一些变量会根据环境设置中的值进行初始化,这些变量被称为环境变量,主要环境变量有:
环境变量 | 说明 |
$HOME | 当前用户的家目录 |
$PATH | 以冒号分隔的用来搜索命令的目录列表 |
$PS1 | 命令提示符,通常是$字符 |
$PS2 | 二级提示符,用来提示后续的输入,通常是>字符 |
$IFS | 属于域间隔符。当shell读取输入时,它给出分隔单词的一组字符,通常是空格、制表符和换行符 |
$0 | shell脚本的名字 |
$# | 传递给脚本的参数个数 |
$$ | shell脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$ |
参数变量:
如果一个脚本程序在调用时代有参数,一些额外的变量将会被创建。即使没有传递任何参数,环境变量$#依然存在,不过值为0.
参数变量 | 说明 |
$1,$2,... | 脚本程序的参数 |
$* | 在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分隔开。如果IFS被修改了,则$*将命令行分隔为参数的方式就随之改变 |
$@ | $*的一种变体,不使用IFS环境变量,所以即使IFS为空,参数也不会挤在一起。 |