shell基础-脚本执行方式

shell脚本的执行方式

echo输出命令

命令语法

echo ""

其中如果输出的内容中有空格,则需要加双引号,否则可以省略。

我们用hello world!演示时候发现报错了

这是因为!在shell中有着特殊作用,我们要想输出它就要先抹去他的作用,改成单引号。

echo ''

具体单双引号的区别我们之后会在运算符详细解释,我们要注意,echo命令是有选项的:

-e 支持反斜线控制的字符转换

内容如下:

我们来举两个例子

/b 退格键删除左侧字符

echo "abc"
echo -e "ab/bc"

我们发现第一条命令输出了abc,而第二条命令输出了退格键,删除了字符b,剩下了ac。

制表符与换行符

echo -e "a\tb\tc\nd\te\tf"

我们发现ab之间加了tab,而cd之间加了换行符。

按照十六进制ASCII输出

echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"

输出颜色

echo -e "\e[1;31m abcd\e[0m"

我们发现abcd用红色输出了,这里解释一下

-e 是用来支持特殊符号

\e[1是用来代表开启颜色输出

\e0m是用来代表终止颜色输出

中间的31m abcd是指用红色输出abcd

这里支持的颜色有

30m = 黑色

31m = 红色

32m = 绿色

33m = 黄色

34m = 蓝色

35m = 洋红

36m = 青色

37m = 白色

第一个脚本

#vi hello.sh

#!/bin/Bash

#The first program

#Author:Myh4ck1ife

echo -e “Mr.Myh4ck1ife is the most honest man in the world”

Linux虽然是没有扩展名一说的,但是这里是为了让我们自己意识到这是一个shell脚本,所以建议加上。
#的所用是注释,但是我们shell中的第一句:#!/bin/Bash并不是注释的意思,这里的作用是为了表示下面是一个脚本,如果我们是一个很简单的脚本,这一句写不写都行,但是如果脚本中嵌入了其他语句,就有可能出错,所以所有的脚本我们还是写上这句,不可或缺。剩下的#后面就都是注释了,随着我们之后shell的复杂化,我们要做好注释。

创建sh目录

mkdir sh

这样我们把所有的脚本都放在这个目录,比较整齐规范,且便于管理。

切换到sh目录

cd sh

写入脚本

vim hello.sh

保存退出

:wq

这里我们的shell脚本就写完了

脚本执行

方法一

赋予执行权限,直接运行

chmod 755 hello.sh
./hello.sh

方法二

通过bash调用执行脚本

bash hello.sh

我们用bash调用的时候,甚至不用赋予执行权限,但我们最习惯的方法其实还是方法一。

补充

cat命令我们很熟悉了,它有一个选项是

-A 显示所有内容

会将其中隐藏的符号有所显现,比如回车符显示为 $

但是如果我们在windows下编写一个相同的脚本看看的话

我们用WinSCP传一下

这里的hellp是linux下编写的,hello是win下编写的,我们在cat一下看看

这里我们发现回车符发生变化,这是因为linux下和windows下的回车符不相同,这样也就是说会不匹配,我们运行一下会报错。

所以我们要对它做一个转换,让他从windows转换成linux
我们用到如下命令

dos2unix 文件名

即从dos到unix的转换,我们用之前先安装上这个命令。

dos2unix的安装

yum -y install dos2unix

我们这里却报错了

我们百度查询到输入以下命令即可解决

yum clean all
yum makecache

可是我们又遇到了新问题

继续百度解决问题

原来是我们上次学rpm包安装的时候yum源中的地址发生了改动,我们改一下即可。

cd /etc/
ls
cd yum.repos.d
vim CentOS-Media.repo

更改即可

我们重新安装,发现又有报错。

后来我发现是yum源改错了,我改成了centos5的源而且是i386架构的。所以进行一下改正。因为我这里觉得改正比较麻烦,所以就直接改成国内的源了。

yum源的更换

切入yum源目录

cd /etc/yum.repos.d

备份一下系统的源

mv CentOS-Media.repo CentOS-Media.repo.bak

下载163网易的yum源

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

更新yum配置

yum makecache

然后我们只需要耐心的等待,然后再运行一下安装dos2unix命令即可

安装完成以后我们运行一下转换命令

dos2unix hello.sh

然后我们cat -A发现回车符已经正常,bash也能正常运行

当然相同的unix2dos也是存在的。