【LINUX 运维】第二章 shell 基础001之shell 脚本的执行方式

举报
Yuchuan 发表于 2022/04/01 19:37:57 2022/04/01
【摘要】 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]$
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。