shell编程基础知识

什么是shell

shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户

shell对话方式

交互的方式:从键盘输入命令,通过/bin/bash的解析,可以立即得到shell的回应,一问一答的方式

非交互式:shell脚本

为什么使用shell编程!

shell编程是实现linix、UNIX系统管理及自动化运维必备的重要工具,可以把繁琐重复的命令写到shell脚本中执行,节约时间,有效的提高运维人员的工作效率,减少不必要的重复时间

变量

  • 普通变量(局部变量)
  ip = 192.168.22.205
  echo $ip
  • 环境变量(全局变量)

    大写、系统定义的,在大部分地方可以使用

  • 特殊变量
$1 $2 $数字   $后数字是几代表shell脚本第几个参数
$#           shell脚本中参数的个数、判断脚本的参数个数
$?            上一个命令的执行结果(返回值)0 执行正确 1相反
$0            脚本文件名  

shell脚本的书写规范

  • 脚本一般存放在/server/scripts/中
  • 脚本编辑使用vim
  • 在执行bash脚本的时候,一般会根据"#!"后的解释器来确定该用那个程序解释这个脚本
  • 脚本文件名一般以.sh结尾

数学计算方法

# awk -v 变量=赋值   变量名称自己定义
awk 'BEGIN{print 1/2}'

书写脚本10与20的加减乘除

#vim cal.sh
#!/bin/bash
n1=10
n2=20
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1+num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1+num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1*num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1/num2}'

执行脚本
# sh cal.sh

定义特殊变量,通过命令行传递参数方式

# vim cal.sh
#!/bin/bash
n1=$1
n2=$2
awk -vnum1=$1 -vnum2=$2 'BEGIN{print num1+num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1+num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1*num2}'
awk -vnum1=$n1 -vnum2=$n2 'BEGIN{print num1/num2}'

执行脚本
# sh cal.sh 10 20 后面要加上两个参数,参数之前加空格

read交互式

  • read交互式赋予变量内容
  • read -p “提示信息”变量,变量名字,执行结束会把输入的信息存放在变量中
# read -p "input num1:"n1
imput num1:sgs
#echo $n1
sgs

通过read命令实现n1,n2赋值进行计算

#vim cal.read.sh
#!/bin/bash
read -p "input num1,num2:"n1 n2
awk -vnum1=$1 -vnum2=$n2'BEGIN{print num1+num2}'
awk -vnum1=$1 -vnum2=$n2'BEGIN{printnum1-num2}'
awk -vnum1=$1 -vnum2=$n2'BEGIN{print num1*num2}'
awk -vnum1=$1 -vnum2=$n2'BEGIN{print num1/num2}'

执行脚本
# sh cal.read.sh
input num1,num2:10 20   #随便输入两个数值,中间要有空格

条件表达式if

[ -d/data ] 判断目录是否存在

[ -f/data ] 判断文件是否存在

注意格式:[空格-f/data空格],[]里面两端必须有空格,中间写内容

  • 比大小
-eq       equal                ==
-ne       not equal            !=
-gt       great than           >
-ge       great equal          >=
-lt       less than            <
-le       less equal           <=

eg:[ 10 -eq 10]
  • if单分支格式脚本
格式:if[条件];then
        命令
    fi

#!/bin/bash
if [ $# -ne 2];then
    echo "输入两个数字"
fi
  • if双分支格式脚本
格式:if[条件];then
    命令
      else
    命令
    fi

comp.sh输入两个数字,如果n1大于n2输出n1>n2,如果n1不大于n2输出n1<=n2

#!/bin/bash
n1=$1
n2=$2

if [ $n1 -gt $2];then
    echo "$n1 > $n2"
else
    echo "$n1 <= $n2"
fi
  • case选择分支
case $变量名 in
'值1')
代码
;;
'值2')
代码
;;
*)
代码
;;
esac
#!/bin/bash
read -p "press some key,then press return:"KEY
case $KEY in
[a-z]|[A-Z]
echo "it's a letter"
;;
[0-9])
echo "it's a digit"
;;
echo "it's function keys,Spacebar or other ksys"
  • for循环
for 变量 in 值1 值2 值3
do
    代码
done

for 变量 `命令`
  do
    程序块
  do done

for((初始值;循环控制;变量变化))
 do
    程序块
 done
#输出3次uptime

#!/bin/bash
for i in 1,2,3,4,5
 do
    echo "$i-->$(uptime)"
 done

#批量解压缩当前文件夹下所有的.tar.gz文件

#!/bin/bash
for i in `ls./*.tar.gz`
 do
    tar -zxvf $i >/dev/null
 done

#求1~100的和
 #!/bin/bash
  sum=0     #变量赋值的时候,=两边绝对不能有空格
  for ((i=1;i<=100;i++))
    do
    sum=$(($sum+$i))
    done
   echo "1+2+3+...+100=$100"
  • while循环
while [条件]
do
    代码
done
#!/bin/bash
a=1
while [ $a -le 5 ]
do
    echo $a
    ((a++))
done

#!/bin/bash
a=1
while((a<=5))
do
    echo $a
    ((a++))
done

原文地址:https://www.cnblogs.com/lzss/p/12188850.html

时间: 2024-08-29 15:31:16

shell编程基础知识的相关文章

linux下shell编程基础知识

1.history    记录历史命令: 预设记录1000条命令,存储在用户家目录 .bash_history 文件中: !!     执行上一条命令 !n    n为数字,history里面显示的指令数字 !cat    执行最近一次以cat开头的命令 !$    上一条命令的最后一个参数 man builtin    可以查询系统内置的所有命令: 2.指令和文件名补全 Tab键    连续按2次列出所有的指令或文件名: 3.别名alias 自定义别名,把很长的经常使用的命令别名一个简单的命令

Shell编程基础知识(一)

一.基本的运行Linux程序的3种方法: (1) 使文件具有可执行权限,直接运行文件.eg:  chmod a+x testfile.sh   ./testfile.sh (2) 直接调用命令解释器来执行程序.eg: python testfile.sh   (根据文件开头声明的命令解释器进行调用) (3) 使用source执行文件  eg:  source testfile.sh   .testfile.sh  (t通常用于重新执行刚修改的初始化文件,使之立即生效) Shell的命令有3种:内

shell编程基础知识2

1.一维数组 定义:A={test1 test2 test3} 引用:echo ${A[0]} 表示引用第一个数组变量 echo ${A[1]} 表示引用第二个数组变量 显示数据参数:echo ${A[@]} 显示参数个数 echo ${#A[@]} 替换数组元素 echo ${A[@]/tets2/test5} 原文地址:https://www.cnblogs.com/hdc520/p/10209561.html

unix环境高级编程基础知识之第一篇

陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张. 从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共识.基本熟悉了shell的介绍,主流的是bash(Bourne-again shell),unix的文件的基本操作,出错处理,用户ID,信号(感觉类似windows的消息),时间值,最后还有系统调用和库函数的区别. 自己把这篇的所有代码用vim的敲完了,主要前期是熟悉unix的基本命令编程,大致了解

第十天:shell编程基础与编写Makefile

一:shell编程基础 shell定义:shell是一个作为用户与linux系统间接口的程序.它允许用户向操作系统输入需要执行的命令.shell有很多中,linux系统中shell为bash. shell编程可以看作是一堆命令的集合.和windows中的bat程序类似的脚本程序.为解释性语言. 第一个shell程序是判断两个数字的大小. 1 #!/bin/bash 2 3 num1=10 4 num2=9 5 6 if test $num1 -gt $num2 7 then 8 echo $nu

Bash编程基础知识学习第一节

Bash编程基础知识学习 一.bash的由来 1 .什么是Bash 什么是Shell Bash 是GNU Bourne-Again SHell,是目前大多数Linux发行版采用的Shell. Shell 是*nix提供给用户使用的界面.一个操作系统的底层是独立运行的, 用户界面和底层分开,可以最大限度的保证系统稳定.Shell就是一个特殊的程序,负责接受用户的命令,并把系统的响应返回给用户. Bash Shell 一般不需要自己安装,在安装发行版的同时都会安装好. Shell的存在是和登陆相关的

Linux Shell编程基础---国际象棋棋盘

这两天在学习一些shell编程的知识,在做到一道国际象棋的题目时,觉得有些意思,就将它写成博客. 先来看看国际象棋棋盘长啥样: 仔细想了会棋盘的分布规则,这个问题肯定有很多思路,我自己想到的是规则是1.将棋盘行数作为一个大循环,循环8次,每次循环根据行号的奇偶来确定格子颜色的次序:2.在单个行中,循环8次并判断列的奇偶数来确定打印颜色以上思路能够打印出最简单的棋盘,但是shell中一个空格的显示形状并非正方形,而且是空格的高度大于宽度.因此需要在单个棋盘的行的打印循环外在加一层控制打印空格行数的

什么是Shell?Shell脚本基础知识详细介绍

这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Linux系统核心

多线程编程基础知识

多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握