Linux入门第五天——shell脚本入门(上)基本概念

1、什么是shell脚本

  Shell 脚本(shell script),是一种为 shell 编写的脚本程序。html

2、shell入门

   1.先导知识linux

  变量知识补充http://www.javashuo.com/article/p-qpvrlpad-bo.htmlshell

   必备先导知识:###来自鸟哥私房菜编程

1. 指令的执行是从上而下、从左而右的分析与执行;
2. 指令的下达就如同第四章内提到的: 指令、选项与参数间的多个空白都会被忽略掉;
3. 空白行也将被忽略掉,而且 [tab] 按键所推开的空白一样视为空白键;
4. 若是读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;
5. 至于若是一行的内容太多,则可使用“ [Enter] ”来延伸至下一行;
6. “ # ”可作为注解!任何加在 # 后面的数据将所有被视为注解文字而被忽略!

  常见执行脚本的方法:vim

chmod +x ./test.sh #使脚本具备执行权限数组

绝对路径:使用 /home/dmtsai/shell.sh 来下达指令;
相对路径:假设工做目录在 /home/dmtsai/ ,则使用 ./shell.sh 来执行  ###若是直接写shell.sh须要PATH中包含此目录!
变量“PATH”功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/

  使用set命令能够查看全部变量bash

   2.第一个shell script——hello worldide

#!/bin/bash # my first shell script echo "hello world"

 

#! 是一个约定的标记,它告诉系统这个脚本须要什么解释器来执行,即便用哪种 Shell。 # 是注释的标记 最后一行为正文

 依次使用如下指令:spa

  

   // 复习 chmod的使用!.net

  在介绍完hello world后,分享鸟哥的shell编写建议:——相似编程规范,请尽可能遵照!

另外,在一些环境的设置上面,毕竟每一个人的环境都不相同,为了取得较佳的执行环境, 我
都会自行先定义好一些必定会被用到的环境变量,例如 PATH 这个玩意儿! 这样比较好啦~
因此说,建议你必定要养成良好的 script 撰写习惯,在每一个 script 的文件开始处记录好:
script 的功能;
script 的版本信息;
script 的做者与联络方式;
script 的版权宣告方式;
script 的 History (历史纪录);
script 内较特殊的指令,使用“绝对路径”的方式来下达;
script 运行时须要的环境变量预先宣告与设置。

   TIPS:sh文件后缀并非必须的(前面咱们有提到过linux不之后缀区分文件类型),只是习惯上,咱们以sh为后缀!

#!/bin/bash # Program: # This program shows the user's choice
# History: # 2015/07/16 VBird First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH

 

3、shell练习

  1.对谈式脚本——read命令的使用:read

    由用户输入first name与 last name,程序输出 full name

#!/bin/bash #function: # input first-name and last-name,output the full-name #author: # zcc on 2017/12/14 read -p "please input your first name" firstname read -p "please input your last name" lastname echo -e "your first name is ${firstname} ,last name is ${lastname}"

  执行:

root@ccc:/tmp# chmod +x showname.sh root@ccc:/tmp# ./showname.sh please input your first namejiangbei please input your last namez your first name is jiangbei ,last name is z

   2.日期式脚本——date的使用:date

    由用户输入文件名,建立3个文件,文件名为用户输入+近3天日期

vim create_3_filename.sh
#头部省略,请自行思考如何补充(包括使用规范)
read -p "please input the filename:" fileuser #use the var syntax filename=${fileuser:-"filename"} date1=$(date -d "+1 day" +%Y%m%d) date2=$(date +%Y%m%d) date3=$(date -d "-1 day" +%Y%m%d) file1=${filename}${date1} file2=${filename}${date2} file3=${filename}${date3} touch "${file1}" touch "${file2}" touch "${file3}"
chmod u+x create_3_filename.sh

  复习以前变量的用法,例如使用$()等!

  执行结果以下:

    

  3.数值运算

    更多数值计算,参考http://www.mamicode.com/info-detail-1324934.html

  输入两个数,输出相加结果:

  1 #!/bin/bash 2 #function: 3 #       add 2 numbers 4 #author: 5 #       jiangbei on 2017/12/15
  6 read -p "input the first number:" first 7 read -p "input the second number:" second 8 total=$((${first}+${second})) 9 echo -e "the total is ${total}"

  其余与上文重复过程省略,基本上,数值运算可使用如下两种方式:

 declare -i total=${firstnu}*${secnu} 
var=$((运算内容))  ###注意为两个括号!

   固然,以上只是整数运算,若是须要支持小数,能够经过bc来进行:

echo "123.123*55.9" | bc

 补充:脚本执行方式的差别

   有了一点脚本的基础后,咱们来看执行方式的差别:

当使用前一小节提到的直接指令下达 (不管是绝对路径/相对路径仍是 ${PATH} 内),或者是
利用 bash (或 sh) 来下达脚本时, 该 script 都会使用一个新的 bash 环境来执行脚本内的
指令!也就是说,使用这种执行方式时, 其实 script 是在子程序的 bash 内执行的!咱们在
第十章 BASH 内谈到 export 的功能时,曾经就父程序/子程序谈过一些概念性的问题, 重点
在于:“当子程序完成后,在子程序内的各项变量或动做将会结束而不会传回到父程序中”!
View Code

  因此,以前的./xx.sh是另外起的一支子程序,其中的数据在执行结束后将会被抹去,若是想要保留,能够经过如下的方式:

  使用 source命令:source showname.sh 

showname.sh 
会在父程序中执行的,所以各项动做都会在本来的 bash 内生效!
这也是为啥你不登出系统而要让某些写入 ~/.bashrc 的设置生效时,
须要使用“ source ~/.bashrc ”而不能使用“ bash ~/.bashrc ”是同样的啊!

  更多请参考:http://blog.csdn.net/violet_echo_0908/article/details/52056071

 4、shell数据类型

  支持整形、字符串以及一维数组 

#字符串,单双引号见参考连接 your_name='qinjx' #数组 array_name=(value0 value1 value2 value3)
#数组的下标能够不连续,shell属于弱类型 array_name[
0]=value0 array_name[1]=value1 array_name[n]=valuen

  完整介绍,参考菜鸟教程http://www.runoob.com/linux/linux-shell-variable.html

  更多数据类型介绍,参考http://blog.csdn.net/a1055186977/article/details/71402758

相关文章
相关标签/搜索