【LINUX 运维】第二章 shell 基础001之shell 脚本的执行方式
一、Shell 概述
1、什么是 Shell
2、shell 的分类
Shell 类别 |
易学性 |
可移植性 |
编辑性 |
快捷性 |
Bourne Shell (sh) |
容易 |
好 |
较差 |
较差 |
Korn Shell (ksh) |
较难 |
较好 |
好 |
较好 |
Bourne Again (Bash) |
难 |
较好 |
好 |
好 |
POSIX Shell (psh) |
较难 |
好 |
好 |
较好 |
C Shell (csh) |
较难 |
差 |
较好 |
较好 |
TC Shell (tcsh) |
难 |
差 |
好 |
好 |
Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Bourne 家族主要包括 sh、ksh、Bash、psh、zsh;
C 家族主要包括:csh、tcsh (Bash 和 zsh 在不同程度上支持 csh 的语法)。我们可以通过/etc/shells 文件来查询 Linux 支持的 Shell。命令如下:
[root@master-google ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@master-google ~]#
二、Shell 脚本的执行方式
1、echo 命令
[root@localhost ~]# echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换(具体参见表 11-2)
-n: 取消输出后行末的换行符号(就是内容输出后不换行)
例子 1:
[root@master-google ~]# echo "yuchuan huaying hello!"
#echo 的内容就会打印到屏幕上。
yuchuan huaying hello!
[root@master-google ~]#
例子 2:
[root@master-google ~]# echo -n "yuchuan huaying hello!"
yuchuan huaying hello![root@master-google ~]#
#如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符。
在 echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 11-2 所示:
控制字符 |
作 用 |
\\ |
输出\本身 |
\a |
输出警告音 |
\b |
退格键,也就是向左删除键 |
\c |
取消输出行末的换行符。和“-n”选项一致 |
\e |
ESCAPE 键 |
\f |
换页符 |
\n |
换行符 |
\r |
回车键 |
\t |
制表符,也就是 Tab 键 |
\v |
垂直制表符 |
\0nnn |
按照八进制 ASCII 码表输出字符。其中 0 为数字零,nnn 是三位八进制数 |
\xhh |
按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数 |
例子 3:
[root@master-google data]# echo -e "\\ \a"
\
#这个输出会输出\,同时会在系统音响中输出一声提示音
例子 4:
[root@master-google data]# echo -e "ab\bc"
ac
#这个输出中,在 b 键左侧有“\b”,所以输出时只有 ac
例子 5:
[root@master-google data]# echo -e "a\tb\tc\t\nd\te\tf"
a b c
d e f
#我们加入了制表符“\t”和换行符“\n”,所以会按照格式输出
例子 6:
[root@master-google data]# echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146"
a b c
d e f
#还是会输出上面的内容,不过是按照八进制 ASCII 码输出的。
也就是说 141 这个八进制,在 ASCII 码中代表小写的“a”,其他的以此类推。
例子 7:
[root@master-google data]# echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"
a b c
d e f
#如果按照十六进制 ASCII 码也同样可以输出
[root@master-google data]#
echo 命令还可以进行一些比较有意思的东西,比如:
例子 8:
[root@master-google data]# echo -e "\e[1;31m yuchuan huaying! \e[0m"
yuchuan huaying!
这条命令会把 yuchuan huaying 按照红色输出。解释下这个命令\e[1 是标准格式,代表颜色输出开始,\e[0m 代表颜色输出结束,31m 定义字体颜色是红色。echo 能够识别的颜色如下:30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色。
例子 9:
[root@master-google data]#
[root@master-google data]# echo -e "\e[1;42m yuchuan huaying \e[0m"
yuchuan huaying
这条命令会给 yuchuan huaying 加入一个绿色的背景。echo 可以使用的背景颜色如下:40m=黑色,41m=红色,42m=绿色,43m=黄色,44m=蓝色,45m=洋红,46m=青色,47m=白色。
2、Shell 脚本的执行
[yuchuanduan69@master-google temp]$ vim yuchuan.sh
#!/bin/bash
#Author: yuchuan huaying (yuchuan.duan@outlook.com)
#this is my first program
echo -e "Yuchuan Huaying Hello!"
Shell 脚本写好了,那么这个脚本该如何运行呢?在 Linux 中脚本的执行主要有这样两种种方法:
² 赋予执行权限,直接运行
这种方法是最常用的 Shell 脚本运行方法,也最为直接简单。就是赋予执行权限之后,直接运行。当然运行时可以使用绝对路径,也可以使用相对路径运行。命令如下:
[yuchuanduan69@master-google temp]$ chmod u+x yuchuan.sh
#赋予执行权限
[yuchuanduan69@master-google temp]$ /home/yuchuanduan69/MasterData/temp/yuchuan.sh
Yuchuan Huaying Hello!
#使用绝对路径运行
[yuchuanduan69@master-google temp]$ ./yuchuan.sh
Yuchuan Huaying Hello!
#因为我们已经在/home/yuchuanduan69/MasterData/temp/ 目录当中,所以也可以使用相对路径运行
[yuchuanduan69@master-google temp]$
² 通过 Bash 调用执行脚本
这种方法也非常简单,命令如下:
[yuchuanduan69@master-google temp]$ bash yuchuan.sh
Yuchuan Huaying Hello!
[yuchuanduan69@master-google temp]$
- 点赞
- 收藏
- 关注作者
评论(0)