shell基本操作

目录

1.shell的含义

2.Shell脚本要求

a.变量命名规范

b.函数命名规范

c.脚本命名规范

d.代码风格规范

e.条件语句与循环规范

f.注释规范

3.Shell变量介绍

4.Shell准备工作

5.Shell编辑工作

6.Shell文件运行

7.运算符

a.基本语法(会一种熟练就行)

b.使用控制台输入运算

c.运算符基本语法总结

8.条件判断

a.单分支判断

b.多分支判断


是一个命令解释器,使用户通过软件界面下面的shell向Linux内核发送请求,以达到运行程序的效果

作用

用户可以使用shell来启动,修改,挂起,停止,编写运行一些程序

Shell脚本要求

变量命名规范

  1. 变量命名需要统一,建议使用全部大写或者驼峰法
  2. 避免无意义数字或数字,数字不能开头
  3. 全局变量和局部变量命名规则

全局变量使用{ },例如${NUMBER_HOME}

  1. 建议合并变量时赋给一个新的变量(废话)

函数命名规范

  1. 函数使用单词首字母大写,或者驼峰法
  2. 缩写也尽量使用首字母大写
  3. 尽量不要超过三个单词组成
  4. 等号两边不能有空格

脚本命名规范

  1. 常规shell脚本统一使用“.sh”
  2. 板块命名应该代表其特性和功能,见名知意
  3. 板块中的脚本和二进制程序命名禁止和其他脚本和二进制程序重名

代码风格规范

  1. 脚本开头第一行一定要声明解释器为#!/bin/bash或者#!/bin/sh,尽量统一
  2. 配置文件以及函数脚本的引用如:source conf/thtpd.conf
  3. 主脚本过程只实现程序主干,功能尽量封装在子函数里面
  4. 显示函数返回值,在函数结尾显示包含return语句,并跟上返回值

条件语句与循环规范

  1. 尽量做到空格,规范相统一,使用同一格式
  2. 尽量一行一条语句,而不是“ ;”隔开
  3. 能简则简

注释规范

  1. 注释声明脚本用途,版本,依赖关系以及版本信息
  2. 注释应详细,缩写易忘的,应添加注释
  3. 注释尽量使用英文,中文有可能乱码

Shell变量介绍

  1. 在Linux shell 中变量分为,系统变量和自定义变量

系统变量==系统定义好的,被占用的==python中的关键字

  1. 显示当前shell所有的变量:set
  2. 静态变量:不会被反复初始化,只会定义一次

shell变量定义

  1. 定义变量:变量=值(无空格)
  2. 撤销变量: unset 变量
  3. 声明静态变量:readonly(只读的)变量  注意:不能unset

Shell准备工作

  1. 新建一个文件夹(shcode)用于方便管理存放shell脚本
  2. 在shcode里新建(touch)一个shell文件(后缀.sh)
  3. 赋予该新建文件可执行命令

shell基本操作_第1张图片

 

[root@text ~]# mkdir shcode

[root@text ~]# touch shcode/hello.sh

[root@text ~]# ll shcode/hello.sh

-rw-r--r--. 1 root root 0 10月 16 02:52 shcode/hello.sh

[root@text ~]# chmod 755 shcode/hello.sh

[root@text ~]# ll shcode/hello.sh

-rwxr-xr-x. 1 root root 0 10月 16 02:52 shcode/hello.sh

Shell编辑工作

任务1:输出“hello word”

  1. 打开shell文件后,按照规范书写代码
  2. Echo (回音,重复),==输出
  3. 将命令返回的结果赋值给变量名需要使用单反引号(左边Esc下面 ~ 下面)

格式:  D=`date`

echo “date=$D”

shell基本操作_第2张图片

 

 

Shell文件运行

  1. 相对路径运行 (需要加前缀 sh ,无需赋予脚本执行权限)
  2. 绝对路径运行(记忆好文件存放位置,需要提前赋予脚本可执行的权限)

shell基本操作_第3张图片

 

运算符

基本语法(会一种熟练就行)

  1. $(( 运算式))
  2. $[运算式]   == 推荐使用,因为简单不容易看错
  3. Expr m + n (expr运算符之间要有空格,将expr的结果赋值给某个对象,使用` `)过于繁琐且无用,放弃了,了解即可
  4. 从控制台输入数值进行运算,在脚本里用$1定义第一个数,$2定义第二个数,类推

输出变量可以定义相同,同一脚本输出后自动刷新

使用第一种语法进行运算

注:等号两边千万不能有空格,固定格式为$后有两对括号

shell基本操作_第4张图片

#!bin/bash

#The first kind of

answer=$(((1+2)*3))

answer1=$(((2+3)*4))

echo  "jieguo=$answer"

echo "jieguo1=$answer1"

 

使用第二种语法进行运算

注:等号两边不能有空格,固定格式为$后[ ],如有三层运算,同python一样括号分隔即可,会报错,但是不影响结果。

shell基本操作_第5张图片

 

#The second way

ans=$[(1+2)*3]

ans1=$[((1+2)*3)/3]

echo "jieguo=$ans"

echo "jieguo=$ans1"

使用控制台输入运算

注:不只是可以两个数,可以多个

 shell基本操作_第6张图片

 

ans1=$[($1+$2)*$3]

echo "jieguo=$ans1"

运算符基本语法总结

  1. 格式要正确,不要忘记$
  2. 输出变量可以定义一样,输出自动刷新echo
  3. 等号两边一定不要有空格
  4. 输出时用双引号
  5. 三阶及以上运算,通python,叠加括号即可

shell基本操作_第7张图片

 

#!bin/bash

#The first kind of

answer=$(((1+2)*3))

answer1=$(((2+3)*4))

echo  "jieguo=$answer"

echo "jieguo1=$answer1"

#The second way

ans=$[(1+2)*3]

ans1=$[((1+2)*3)/3]

echo "jieguo=$ans"

echo "jieguo=$ans1"

#The fourth way

ans1=$[($1+$2)*$3]

echo "jieguo=$ans1"

条件判断

[ hello ](注意hello前后要有空格

非空返回true,可以用$?验证 (0为true,>1为false)

  1. 字符串比较  =
  2. 数字与数字比较  

-lt 小于(little)

-gt 大于(greater)

-eq 等于(equal)

-le 小于等于(litter equal)

-ge 大于等于(greater equal)

-ne 不等于(no equal)

3. 按照文件的权限进行判断

-r  (read)

-w  (write)

-x  (execute)

4.按照文件类型进行判断

-f 文件存在且是一个常规的文件

-e 文件

-d 文件存在且是一个目录

单分支判断

语法:

If [  条件判断式 ](注意判断条件两边一定要有空格,是一定)

Then (然后,如此那么)

Echo

Fi

shell基本操作_第8张图片

 shell基本操作_第9张图片

#!bin/bash

#judgment string

if [ "hello"="he1lo" ]

then

  echo "yes"

fi

#numeric comparison kongzhitaishuru

if [ $1 -le 80 ]

then

echo "yes"

fi

#judge documents

if [ -f /root/shcode/hello.sh ]

then

echo " yes"

fi

#four

if [ hello ]

then

echo "yes"

fi

多分支判断

语法:

If [ 条件判断式 ]

Then

Echo

Elif[ 条件判断式 ]

Fi

shell基本操作_第10张图片

 shell基本操作_第11张图片

 

if [ hello ]

then

echo "yes"

fi

if [ $1 -ge 90 ]

then

echo "good"

elif [ $1 -ge 80 ]

then

echo "pass"

elif [ $1 -lt 80 ]

then

echo "failed"

fi

for循环遍历    

shell基本操作_第12张图片

 

你可能感兴趣的:(shell,linux,shell)