迪浮资讯Information Dynamic百分努力只为换取一份信任

 当前位置:首页 > 迪浮资讯 > 行业新闻

Linux学习基础——之shell基础——脚本的执行方式


所有的Linux命令都可以在shell中执行

1、echo 输出命令

【root@localhost ~】#echo 【选项】【输出内容】

选项:

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

那什么样的字符加反斜线才能被识别呢?

看如下表格

控制字符 作用

\\

输出 \ 本身
\a 输出警告音
\b 退格键,也就是向左删除键
\c 取消输出行末的换行符。和“-n”选项一致
\e ESCAPE键
\f 换页符
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\Onnn 按照八进制ASCLL码表输出字符。其中0位数字零,nnn是三位八进制数
\xhh 按照十六进制ASCLL码表输出字符。其中hh是两位十六进制数

注意:如果要输出的内容中有空格,需要添加“引号”

示例

1):输出hello world!    特别注意,感叹号有特别作用,所以此处如果想输出感叹号,需要使用单引号,


		
  1. [root@localhost ~]# echo "hello world"
  2. hello world
  3. [root@localhost ~]# echo 'hello world !'
  4. hello world !
  5. [root@localhost ~]#
  6. 注意,如果使用双引号,如第一行,请不要在此处添加感叹号。因为感叹号有特殊作用
  7. 具体后面学习到再说

2)示例删除左侧字符:

【root@localhost ~】#echo  -e  "ab\bc"


		
  1. [root@localhost ~]# echo -e "ab\bc"
  2. ac

3)制表符与换行符

【root@localhost ~】#echo -e "a\tb\tc\nd\te\tf"


		
  1. [root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
  2. a b c
  3. d e f
  4. [root@localhost ~]#

解析:a和b b和c 之间插入了制表符,c和d之间插入了换行符

4)#按照十六进制ASCII码也同样可以输出

【root@localhost ~】#echo -e "\x61\t\x63\n\x64\t\x65\tx66"


		
  1. [root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
  2. a b c
  3. d e f
  4. [root@localhost ~]# echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"
  5. a b c
  6. d e f
  7. [root@localhost ~]#

注:十六进制的ASCII码可以从网上找到相对应的表,即数字和字符的对应表示

5)#输出颜色

【root@localhost ~】#echo -e “\e[1;3]m abcd \e[0m”

注:#30m =黑色,31m=红色,32m=绿色,33m=黄色

        #34m=蓝色   ,35m=洋红,36m=青色,37m=白色

会输出红色的abcd


		
  1. [root@localhost ~]# echo -e "\e[1;31m abcd \e[0m"
  2. abcd
  3. [root@localhost ~]#

注:\e[1;  表示开启颜色调节输出, \e[0m  表示结束颜色调节输出

2、第一个脚本

【root@localhost sh】# vi hello.sh

#!/bin/Bash

#The first program

#Author:xiaoxiaozhou (E-mail:2333@qq.com)

echo -e "Mr.xiaoxiaozhou is the most honest man in his shcool'

注意:如上#!/bin/Bash  属于例外,不是注释,而是标识,

           除此之外,在Linux中一般以#开头的是注释;该句不可省,表示如下是shell脚本


		
  1. [root@localhost sh]# vim hello.sh
  2. #!/bin/bash
  3. #xiaoxiaozhou(2333@qq.com)
  4. echo "Mr.xiaoxiaozhou is the honest man in our school"

3、脚本执行的方式:

步骤一:要想运行,必须赋予相应执行权限;

步骤二:所有命令或者脚本的执行,实质都是需要使用绝对路径的方式

(没有明显使用绝对路径的,一定用了其他方式,比如配置环境变量,但实质没变)

》赋予执行权限,直接运行

 >>chmod 755 hello.sh

 >>./hello.sh


		
  1. [root@localhost sh]# chmod 755 hello.sh
  2. #用户想要执行脚本,必须对其有执行权限,所以上述做了赋予权限的动作
  3. [root@localhost sh]# ll
  4. 总用量 4
  5. -rwxr-xr-x. 1 root root 97 1216 09:24 hello.sh
  6. #通过绝对路径调用执行
  7. [root@localhost sh]# /root/sh/hello.sh
  8. Mr.xiaoxiaozhou is the honest man in our school
  9. #通过相对路径调用执行
  10. [root@localhost sh]# ./hello.sh
  11. Mr.xiaoxiaozhou is the honest man in our school
  12. [root@localhost sh]# ls
  13. hello.sh
  14. [root@localhost sh]#

》通过Bash调用执行脚本

>>bash hello.sh


		
  1. [root@localhost sh]# bash hello.sh
  2. Mr.xiaoxiaozhou is the honest man in our school
  3. [root@localhost sh]#

4、如果运行一个陌生的 .sh的脚本,运行失败,怎么办?

步骤一、根据提示确认不可执行的原因,如果是没有权限,赋予相应权限即可;

               如果是其他,比如提示找不到文件,先确认路径是否正确,是否有通过实质的绝对路径的方式进行了访问;

               如果路径和权限都对,但是提示如下


		
  1. [root@localhost ~]./Tetris.sh
  2. --bash:./Tetris.sh: /bin/bash^M:bad interpreter:没有那个文件或目录
  3. [root@localhost ~]

通过提示可以看到,M 相关错误这其实是说脚本文件中出错了,解决步骤如下;

步骤二、权限和路径错误都好解决,如果是上方末尾问题,那其实是因为该脚本文件编辑环境其实是在Windows环境下编辑好,拷贝到当前Linux环境下进行运行的。因为Linux脚本中,正常的回车符结尾是$结尾的,但是在Windows中,编辑的 回车符,结尾是以M$结尾,所以移到Linux环境下,M不被识别

那如何验证是否同上所说呢?

通过cat -A  [脚本文件路径]         -A选项可以把文件中的隐藏字符都查出来,比如这里的M$


解决原理:把M$换成$即可;

解决方法:有两个,

方法一:手动更换;

方法二:使用命令dos2unix   [要转换的文件名]    转换

转换完,即可正常运行。

扩展:相反,在Linux中编辑的.sh文件,想在Windows中运行,只要使用unix2dos 命令即可

如果这两个命令没装,可以安装一下即可。







迪浮科技课程服务承诺:


1、免费重修:
学员缺课或者学校效果不理想,可以免费重修,确保课程内容完全掌握。重修过程中绝对不收取任何费用!
2、单独辅导:
如果学生在学习过程中,因各种原因无法跟班级进度同步,公司安排专家讲师一对一辅导,手把手带你成为IT精英!
3、自由实验:
清默网络有先进完善的实验中心,全天开放,实验机时不限,不断提高动手操作能力!
4、考试辅导:
学员考试前先通过清默内部模拟考试,技术确定达到考试要求并提供考前辅导及考试技巧讲解。
如果模拟考试未能通过,专家讲师会给予建议和辅导,合格后再参加正式考试,确保学员能高分通过认证考试。
5、企业实战项目:

即通过先进的设备完全搭建和企业项目完全一致的网络环境,把学习内容融会贯通并在实际项目中加以应用,以达到学员迅速掌握实际技能并弥补经验不足的目的,让学员的学习内容不再纸上谈兵,理论与实战完全吻合


咨询老师:郭老师

咨询电话:15056089769

咨询Q Q :1027831018