SHELL (bash)编程记录

前言

        shell编程就是将一些shell命令(shell编程中一定有shell命令)进行组合使用通过一部分的shell循环控制语句(shell编程中不一定要用到循环控制语句),主要目的是通过shell脚本达到需求;有输入(不一定有)--->处理(一定有)--->输出(不一定有)。

目录

一、vi编辑器快捷键记录

二、shell编程

(一)、shell变量

(二)、shell函数

(三)、shell循环

  (四)   、其他


一、vi编辑器快捷键记录

1、vi中快速复制粘贴(yy)

例:复制4行

4yy   然后把光标(不是鼠标)移动到需要粘贴的位置,按一下p键

2、粘贴(p)

p:粘贴到光标后面的位置

P:粘贴到光标前面的位置

3、剪切

x 剪切当前字符

nx:剪切多个字符

4、删除多行(dd)

dd:快速删除一行

例:删除4行

4dd 删除光标(包括光标所在行)

5、撤销(u)与恢复(ctrl+r)

u 撤销一步操作

6、到第一个(gg)

7、到最后一行(ctrl + g)

8、定位到第n行

例:定位到第8行

:8

9、vi编辑器中查找(/)

例:在vi中查找字母a

/a

n:下一个字母

N:上一个字母

二、shell编程

(一)、shell变量

1、本地变量

例1:创建变量

name =zs

例2:打印变量(引用变量)

echo $name  (echo${name})

例3:移除变量 unset name

2、环境变量

注:所有的环境变量都需要配置到/etc/profile中

创建环境变量

export shell=a.sh

PATH=$PATH:$a.sh

生效:

source /etc/profile 

3、局部变量

创建在函数体中的变量

在函数a中创建一个局部变量

function a(){

local name=ls

echo name

}

调用函数

例:调用函数a

a

4、位置变量

将shell脚本外的参数传入到shell脚本中。在shell脚本内定义

即:向shell脚本中传递参数采用位置变量,向函数中传入参数也是采用位置变量

$0:执行脚本的命令本身(包含传入的参数)

$1:第一个参数

$2:第二个参数

例1(向shell脚本中传递参数):执行脚本 a.sh传入参数1,2,3

echo $0
echo $1
echo $2
echo $3
#以上为a.sh的内容

执行语句为:/test/a.sh 1,2,3

$0输出为:/test/a.sh(当执行语句为./a.sh 1,2,3  时:$0输出为:./a.sh)

$1输出为:1

$2输出为:2

$3输出为:3

例2(向function 函数中传递参数):调用函数a 传入参数为a ,b,c


function a(){
echo $0
echo $1
echo $2
echo $3
}
a a b c
#以上为a.sh的内容

执行shell脚本语句为:/test/a.sh 1,2,3

执行function函数语句为:a a b c

$0输出为:/test/a.sh

$1输出为:a

$2输出为:b

$3输出为:c

5、特殊变量

$?:接收上一条命令的返回状态码,状态码在0-255之间

$#:获取参数个数

$*:获取所有的参数值

$$:获取当前shell进程号(PID)

(二)、shell函数

1、函数定义

function 函数名 () {

函数内容

return 0-255之间  注:为返回值固定写法

}

例:创建一个函数名为test的函数 返回值为100

function test(){
echo $0
echo $1
echo $2
return 100
}

2、函数调用函数,并获取函数值

函数名 参数1 参数2

例:调用test()函数传入参数为1 、2、3,并获取函数的返回值(也叫状态码)

function test(){
echo $0
echo $1
echo $2
return 100
}
test 1 2 3
echo $?

(三)、shell循环

单引号和双引号的区别:

单引号里面不能引用变量(当单引号引入变量时,会原样输出,不会输出变量值,即引用变量无效),双引号中会引用变量的值

常用的for循环

1、for循环打印1-10

for ((i=10;i<10;i++ ))

do

echo $i

down

2、for循环打印1-9

for i in {0..9}
do
echo $i
done

3、while循环打印三角

j=1
x=1

while [ $j -le 5 ]
do
      while [ $x -le $j ]
      do
      echo -n "* "
      let x++
      done
x=0
echo

let j++

done

4、

num1=1
num2=1

if [ $num1 =  $num2 ]
 then echo '相等'
fi

打印:相等

num1=0
num2=1

if [ $num1 =  $num2 ]
 then echo '相等'

 else echo '不相等'
fi

打印:不相等

num03=3

if [ $num03 =  1 ]
    then echo '等于1'
 elif [ $num03 =  2 ]
    then echo '等于2'
 elif [ $num03 =  3 ]
    then echo '等于3'
 else echo '相等4'
fi

打印:等于3

(四)、其他

1、> 和 >>

echo "覆盖到文件"  > log1.txt  每次覆盖整个文件

echo "末尾追加到文件" >>log2.txt  追加到文件末尾

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值