shell基础-脚本执行方式

本文介绍了Linux Shell脚本的执行方式,包括如何使用echo命令输出内容,编写和执行Shell脚本,以及脚本中可能存在的隐藏字符问题。在编写脚本时,需以#!/bin/bash开头,并注意在不同编辑器中回车符可能导致的执行问题。通过dos2unix命令可解决Windows到Linux的格式转换问题。

1. 输出命令echo

命令格式:echo [选项] [输出的内容]

选项:

-e:支持反斜线控制的字符转换,也就是支持转义字符。

下面说一下Linux中的转义字符的作用。

转义字符作用
\\代表\本身。
\a警告音。
\b退格键,也就是向左退格删除一个字符。
\c取消行尾的换行符。和“-n”选项一致。
\eESCAPE键。
\f翻页。
\n换行符。
\r回车键。
\t水平制表符,也就是tab键。
\v垂直制表符。
\0nnn代表八进制的ASCII码指向的字符,nnn是三位八进制数。
\xhh代表十六进制的ASCII码指向的字符,hh是两位十六进制数。

示例:

[root@localhost ~]# echo hello
hello
[root@localhost ~]# echo hello world
hello world
[root@localhost ~]# echo "hello world"
hello world
[root@localhost ~]# echo "hello world!"
-bash: !": event not found
[root@localhost ~]# echo 'hello world!'
hello world!
[root@localhost ~]# echo hello world!
hello world!

[root@localhost ~]# echo "ab\bc"
ab\bc
[root@localhost ~]# echo -e "ab\bc"
ac
[root@localhost ~]# echo -e 'ab\bc'
ac
[root@localhost ~]# echo -e ab\bc
abbc

可以用双引号或单引号,将输出的内容括起来。如果输出内容中有英文感叹号,不能用双引号(否则会报错),要用只能用单引号,要么就不用引号。

要想让Linux识别转义字符,必须用引号括起来。

输出带有颜色的字符:

  • 以 \e[; 或 \e[1; 开头,如果用 \e[1; ,颜色会浅一些
  • 以 \e[0m 结尾
  • 中间是颜色标识符(如31m)和要输出的内容(如ABC)

颜色标识符主要有8种:

30m代表黑色;31m代表红色;32m代表绿色;33m代表黄色;
34m代表蓝色;35m代表洋红;36m代表青色;37m代表白色。
[root@localhost ~]# echo -e "\e[;31mABC\e[0m"
ABC

上面输出的ABC字符其实都是红色的。

2. 编写第一个shell脚本

脚本文件名最好以 .sh 结尾,便于Linux系统和自己识别。

vi hello.sh

脚本内容如下:

#!/bin/bash
#The first program
#Author: admin
echo -e 'hello world!'

说明: 脚本文件的内容,必须以#!/bin/bash开头,标识这个文件是bash文件。第一行行首的#,不表示注释。其他行行首的#,表示注释。

3. 执行脚本

执行脚本的方法有两种:

  • 先给脚本文件赋予执行权限,再来直接执行
  • 通过bash调用脚本文件

第一种方法的操作如下:

chmod 755 hello.sh  
给脚本hello.sh赋予755的权限

./hello.sh      
执行当前目录下的hello.sh脚本(相对路径和绝对路径都可,但必须带有目录,不可以直接写文件名)

一般来说,Linux中的可执行文件都必须带有路径才能执行。

第二种方法的操作如下:

bash hello.sh       
通过bash调用bashhello.sh(相对路径和绝对路径都可,如果是当前目录下的脚本,可以省去当前目录./)

推荐使用第一种方法来执行shell脚本文件。

4. 脚本中的隐藏字符

在Linux中,用文本编辑器(如vi)编写脚本文件时,如果有回车,回车符是$(它是隐藏的,一般不容易被发现)。在Linux中执行该脚本时,Linux也能够正确识别该隐藏字符,故而没有问题。

但是,如果你的脚本文件是用Windows的编辑器(如记事本)编写的,隐藏的回车符就是^M$,Linux是无法正确识别该隐藏字符的。这样就会导致脚本文件在Linux中无法正确执行。

查看脚本文件中的隐藏字符:

cat -A hello.sh     
查看hello.sh中的所有内容,包括隐藏字符,主要是指回车符$。

结果如下:

[root@localhost ~]# cat -A hello.sh
#!/bin/bash$
#The first program$
#Author: admin$
echo -e 'hello world!'$

在Linux的编辑器中,回车符是$。而在Windows的编辑器中,回车符是^M$。

如果脚本文件是在Windows当中编写的,直接拿到Linux中使用,就会报错。为此,可以使用通过如下命令解决。

dos2unix hello.sh   
将文件hello.sh由Windows格式转换为Linux格式。

不过,大多数Linux系统并没有安装dos2unix命令。可使用yum快速安装。

yum -y install dos2unix
通过yum来安装dos2unix(前提是你的yum可用)

dos2unix命令的作用:把文件中的所有字符(包括隐藏字符)由Windows格式转换为Linux格式。

unix2dos命令的作用:把文件中的所有字符(包括隐藏字符)由Linux格式转换为Windows格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值