微信号:grzlwx

介绍:光荣之路官方资讯

Shell脚本编程初体验(汪汪)

2015-08-02 22:09 光荣之路


在shell中显示自定义信息

正如我们所知道的,通常,与shell的交流以及shell内的交流是以对话的方式进行的。因此,让我们创建一些真正的脚本吧,这些脚本也会和我们讲话。这会让你学到一些简单的命令,并对脚本的概念有一个更好的理解。

假设我们是某个公司的总服务台经理,我们想要创建某个shell脚本来注册呼叫信息:电话号码、用户名以及问题的简要描述。我们打算把这些信息存储到普通文本文件data.txt中,以便今后统计。脚本它自己就是以对话的方式工作,这会让总服务台的工作人员的小日子过得轻松点。那么,首先我们需要显示提问。对于显示信息,我们可以用echo和printf命令。这两个都是用来显示信息的,但是printf更为强大,因为我们可以通过它很好地格式化输出,我们可以让它右对齐、左对齐或者为信息留出专门的空间。让我们从一个简单的例子开始吧。要创建文件,请使用你惯用的文本编辑器 (kate,nano,vi,……),然后创建名为note.sh的文件,里面写入这些命令:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. echo "Phone number ?"

如何运行/执行脚本?

在保存文件后,我们可以使用bash命令来运行,把我们的文件作为它的参数:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# bash note.sh

  2. Phone number ?

实际上,这样来执行脚本是很不方便的。如果不使用bash命令作为前缀来执行,会更舒服一些。要让脚本可执行,我们可以使用chmod命令:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# ls -la note.sh

  2. -rw-r--r--. 1 root root 22 Apr 23 20:52 note.sh

  3. [root@localhost ~]# chmod +x note.sh

  4. [root@localhost ~]# ls -la note.sh

  5. -rwxr-xr-x. 1 root root 22 Apr 23 20:52 note.sh

  6. [root@localhost ~]#

注意 : ls命令显示了当前文件夹内的文件。通过添加-la键,它会显示更多文件信息。

如我们所见,在chmod命令执行前,脚本只有读(r)和写(w)权限。在执行chmod +x后,它就获得了执行(x)权限。(关于权限的更多细节,我会在下一篇文章中讲述。)现在,我们只需这么来运行:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# ./note.sh

  2. Phone number ?

在脚本名前,我添加了./组合。.(点)在unix世界中意味着当前位置(当前文件夹),/(斜线)是文件夹分隔符。(在Windows系统中,我们使用反斜线\表示同样功能)所以,这整个组合的意思是说:“从当前文件夹执行note.sh脚本”。我想,如果我用完整路径来运行这个脚本的话,你会更加清楚一些:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# /root/note.sh

  2. Phone number ?

  3. [root@localhost ~]#

它也能工作。

如果所有linux用户都有相同的默认shell,那就万事OK。如果我们只是执行该脚本,默认的用户shell就会用于解析脚本内容并运行命令。不同的shell的语法、内部命令等等有着一丁点不同,所以,为了保证我们的脚本会使用bash,我们应该添加#!/bin/bash到文件首行。这样,默认的用户shell将调用/bin/bash,而只有在那时候,脚本中的命令才会被执行:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# cat note.sh

  2. #!/bin/bash

  3. echo "Phone number ?"

直到现在,我们才100%确信bash会用来解析我们的脚本内容。让我们继续。

读取输入

在显示信息后,脚本会等待用户回答。有个read命令用来接收用户的回答:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. #!/bin/bash

  2. echo "Phone number ?"

  3. read phone

在执行后,脚本会等待用户输入,直到用户按[ENTER]键结束输入:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# ./note.sh

  2. Phone number ?

  3. 12345 <--- 这儿是我输入的内容

  4. [root@localhost ~]#

你输入的所有东西都会被存储到变量phone中,要显示变量的值,我们同样可以使用echo命令:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. [root@localhost ~]# cat note.sh

  2. #!/bin/bash

  3. echo "Phone number ?"

  4. read phone

  5. echo "You have entered $phone as a phone number"

  6. [root@localhost ~]# ./note.sh

  7. Phone number ?

  8. 123456

  9. You have entered 123456 as a phone number

  10. [root@localhost ~]#

bash shell中,一般我们使用$(美元)符号来表明这是一个变量,除了读入到变量和其它为数不多的时候才不用这个$(将在今后说明)。

好了,现在我们准备添加剩下的问题了:

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
  1. #!/bin/bash

  2. echo "Phone number?"

  3. read phone

  4. echo "Name?"

  5. read name

  6. echo "Issue?"

  7. read issue

  8. [root@localhost ~]# ./note.sh

  9. Phone number?

  10. 123

  11. Name?

  12. Jim

  13. Issue?

  14. script is not working.

  15. [root@localhost ~]#

(未完待续)

(译者:GOLinux 译文来源:https://linux.cn/article-5591-1.html

作者:Petras Liumparas 原文来源:http://linoxide.com/linux-shell-script/guide-start-learning-shell-scripting-scratch/


 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           

一字一句当思来之不易,感谢作者,传播测试知识、技能与正能量!

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499


 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 2013年我们读过的好书 设计模式总结 浅解PHP DOS攻击 —— 如何玩坏PHP数组 R语言入门第二讲:读取数据------函数read.table第二讲 黑客与普通程序员的十大区别