一、shell 是个 嘛啊?
我用有道词典翻译了一下,解释如下,shell 是个“壳”,贝“壳”保护里面软软的身体;那么linux 的 shell 的 这个壳保护啥呢?
二、linux 的 shell 的 这个“壳”保护啥呢?
答案是:shell 这个“壳”保护 着 “ linux 内核”。
专业点的解释:
Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。
三、作用:
为了对用户屏蔽内核的复杂性,也为了保护内核以免用户误操作造成损害,在内核的周围建了一个外壳(shell)。用户向shell提出请求,shell解释并将请求传给内核。
四、常见 的 shell :
1、Bourne shell (sh)
2、Korn Shell(ksh)
3、C shell (csh)
4、Bourne Again Shell(bash)
在linux 终端 输入:echo $SHELL
如下ubuntu shell 是 bash
五、Shell 脚本 及 shell脚本语言
将多个Shell 命令按照一定的格式放到一个文本中,那么这个文本就叫做 Shell 脚本。
1、Shell 脚本参数
1)本地变量:用户自定义的变量。
2)环境变量(例如PATH):用于所有用户变量,用于用户进程前,必须用export命令导出。
3)位置变量:$0(脚本名),$1-$9:脚本参数。
4)特定变量:脚本运行时的一些相关信息。
$* 不包括脚本名字的参数字符串;
$#不包括脚本名字的参数个数;
$? 最好一条命令的返回结果0 成功
例子:
#!/bin/sh
#局部变量SHELLSCRIPT
SHELLSCRIPT=testscrip.sh
echo "shell script file name is $SHELLSCRIPT"
#全局变量PATH
echo "global param PATH :$PATH"
#位置变量
echo "The first param is $0"
echo "The second param is $1"
echo "The third param is $2"
#特殊变量 @* 不包括脚本名字的参数字符串;$#不包括脚本名字的参数个数;$? 最好一条命令的返回结果0 成功
echo "$ * param is $*"
echo "$ # param is $#"
echo "$ ? param is $?"
# 文件状态测试 -r -w -x -d -l -f
if [ -r testscript.sh ]
then
echo "testscript.sh can be read"
fi
if [ -d testscript.sh ]
then
echo "testscript.sh is direction"
else
echo "testscript.sh is not direction"
fi
#数值测试 -lt -gt -le -ge -eq
#逻辑操作符 -a -o !
if [ $# -lt 1 ]
then
echo "param num less than 1"
elif [ $# -ge 1 -a $# -le 3 ]
then
echo "$ # >=1 && $ # <=3"
elif [ $# -gt 3 ]
then
echo "$ # greate then 3"
fi