idea shell 中的函数 跳转_15分钟学会Shell编程

一:什么是shell

shell是用户与linux内核交互的外壳,通过暴露外部方法(如 list),来达到人机交互。

shell的编程是一种脚本编程,面向命令编程,最常用的解释器为bash解释器。

shell可以python代替,shell和python各有优缺点。

a4847600f491895b6610fa989c08c39b.png
bash是一个可执行文件,及shell的解释器

e26d807f577035e29895b3158caef939.png
cd是shell内置的方法,就像print()是python内置的一个函数一样。

二:Hello World

vi demo #并添加以下内容

#!/usr/bin/bash
echo "hello World"

#!/usr/bin/bash 这句话表明这个文本是shell脚本(记住就可以了,就是一种统一的规范)

chmod 777 ./demo
./demo

645cdb9ba024a8f31635b2b4d566e0e0.png

若不添加第一行的说明,则需要。

bash ./demo

echo 为打印到控制台作用,验证如下。

bffc935ae671bce8b994015d47cb1548.png
注意看Display the此行

三:了解$的用法和参数定义

参数定义

var=value

#撤销声明
unset var

#查看已经声明的变量
set

一个$是取值的意思,例如

#!/usr/bin/bash
a="myVar"
echo $a

db3d7b20618ebf192288e2d81fb7bd75.png

两个$$是取得当前进程PID

#!/usr/bin/bash
a=$$
echo $a

9aac66dd36c314b03ba53e4713603415.png

$#(获取参数个数),$1(获取第一个参数)

#!/usr/bin/bash
echo $#
echo $1
echo $4
echo ${4}Append

2764f16e6444785e7b5a72615cae77fe.png

$?(获取上次命令的执行结果),非0表示错误,为0表示执行成功

$(shell cmd),获取括号内的shell命令的结果,注意`shell cmd` 同样的效果。

#!/usr/bin/bash
files=$(ls -l | wc -l)
lines=`ls -l | wc -l`
echo $?
echo $lines
echo $files      

d5d360ec59b6e7b5aa55945f77a45049.png

四:表达式

运算符

expr + , - , *, /, %

Let的用法,(( ))的用法

a=1
b=2
let c=$a+$b
d=$((a+b))
echo $c $d

中括号的用法(-lt = <)

[ 3 -lt 8 ] && echo "is true"

条件判断

= 字符串比较

-lt 小于(less than) -le 小于等于(less equal)

-eq 等于(equal) -gt 大于(greater than)

-ge 大于等于(greater equal) -ne 不等于(Not equal)

-r 有读的权限(read) -w 有写的权限(write)

-x 有执行的权限(execute)

-f 文件存在并且是一个常规的文件(file)

-e 文件存在(existence) -d 文件存在并是一个目录(directory)

-n 判断是否为空

[-z string] “string”的长度为零则为真

举个例子

#!/bin/bash
if [ -n $1 ] ; then
    echo "有参数输入"
else 
   echo "没有参数输入"
fi

接受输入

read -t [等待输入的秒数] -p [提示符] [想要保存到的参数名]

举个例子,10秒内输入名字

#!/bin/bash
read -t 10 -p "输入你的名字" NAME
echo $NAME

五:流程控制

举个if的例子

if ls / &> /dev/null ; then 
   echo ok
else
  echo no ok
fi

更加详细的 help if

举个for的例子

for(( i=0;i<10;i++ ))
do
  echo $i
done

#集合for
for i in 1 2 3 4
do
  echo $i
done

举个 while

while ls /etc;
do 
  echo ok
done

类似switch的case用法

a=1
case $a in
   1) echo "this is 1"
   ;;
   2) echo "this is 2"
   ;;
esac

六:自定义函数

自定义函数

function 函数名()

{

函数逻辑

}

函数返回值为最后一行的执行结果,举个例子

$!/bin/bash
function sum()
{
   expr $1 + $2
}

read -p "输入第一个数字” n1
read -p "输入第二个数字"  n2
sum $n1 $n2

#在终端调用,输入 1 2

七:总结

shell很容易上手,学习完基本概念和help的用法后,多找找练习题,或者看看别人写的bash脚本即可熟练掌握。

更加全面的指南。

另外idea和vscode也有许多shell自动补全的插件。

如果你使用vscode本地编辑远程主机bash文件的话,配置bash的插件,那么对比使用vi 编辑调试shell脚本,效率会大大提升,笔者很推荐大家使用vscode远程开发模式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值