什么是shell
shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令。在Linux中安装多个shell是可行的,一般系统有默认的shell,linux中默认的为Bash
查看系统所有shell及当前起作用shell
[liangc@ip-10-30-20-114 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看当前shell,通过shell变量查看
[liangc@ip-10-30-20-114 ~]$ echo $SHELL
/bin/bash
如何编写shell
使用文本编辑工具,将命令组合到一个文件中即可,在linux中,扩展名无特别意义,它只是为了更清楚标识这个文件而已,所以你的shell脚本文件可以无扩展名。但是一般都会加上.sh作标识
vi first
敲入如下命令
#!/bin/sh
echo "hello world"
exit 0
以上是一个简单的shell脚本
第一行#!是一种特殊注释,后面的/bin/sh表示这个脚本将使用此shell来解析执行,需使用绝对路径
exit的使用确保脚本返回一个有意义的状态码,如果其它脚本需要调用这个脚本程序,那么返回一个有意义的状态码是很有必要的。但建议时,即使这个程序不会被其它程序调用,还是返回一个状态码吧。一般用0表示成功。
运行shell
两种运行方式
1 调用shell,把脚本名当成一个参数
/bin/sh first
2 使用chmod赋予可执行权限
chmd +x first
./first
shell语法
变量,在shell里,变量可以不先声明,只是通过使用它们(比如赋初值时)来创建它们。所有变量被看作字符串并以字符串存储,即使值为数字时也如此。linux区分大小写,所以Hello和hello是不同的哦。
在变量面前加上“$"可访问该变量。
hello="hello world"
echo $hello
echo "$hello"
echo '$hello'
echo $hello
输出
hello world
$hello
$hello
注意,如果字符串里面包含空格,必须用引号把它们括起来。此外,等号两边不能有空格
使用单引号和反斜线不会进行变量的替换
环境变量
环境变量 | 说明 |
---|---|
$HOME | 当前用户家目录 |
$PATH | 以冒号分隔的用来搜索命令的目录列表 |
$0 | shell脚本的名字 |
$# | 传递级脚本的参数个数 |
$$ | shell脚本的进程号,脚本通常用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$ |
参数变量
参数变量 | 说明 |
---|---|
$1 ,$2.... | 脚本程序的参数 |
$* | 在一个变量中列出所有参数,各参数之间用环境变量IFS中第一个字符分隔开 |
$@ | 是$*的变体,它不使用IFS变量,即使IFS为空,参数也不会挤在一起 |