0
点赞
收藏
分享

微信扫一扫

shell编程

扒皮狼 2021-09-23 阅读 61
Linux

shell是一个命令解释器

shell脚本的执行方式:

一般以.sh 结尾

开头:

#/bin/bash

方式1:给出文件权限(推荐)

权限:

chmod 744 myShell.sh

执行相对路径,绝对路径都可以

方式2:(sh+脚本)不推荐

sh ./myShell.sh

shell的变量:

shell中的变量分为 系统变量用户自定义变量

1.系统变量

$HOME
$PWD
$SHELL
$USER
...

2.显示当前shell中的所有变量

set

shell变量的定义

定义变量:变量 = 值
撤销变量: unset 变量
静态变量:readonly 变量 不能usnet

#显示行号
:set nu

变量定义的规则:

  • 数字字母下滑线组成,数字不可以开头
  • 等号两侧不能有空格
  • 变量名习惯使用大写

将命令的返回值返回赋值给变量:

A=`res`
A=$(res)   推荐使用

设置环境变量:

export 变量名=变量值 (将shell变量输出)
source 配置文件  (使配置文件生效)
echo $变量名

多行注释:

:<<!
.....
!

位置参数变量:

$0 $1 $2 ... ${10} ${11}
$*  获取所有参数  把参数看为一个整体
$@  获取所有参数  区别对待参数
$#  参数的个数

预定义变量:

$$   #当前进程号
$!   #后台运行最后一个进程进程号
$?   #脚本执行状态

运算符的使用:

$((运算符))   
$[运算符]  (推荐)
`expr m + n`
  • 计算 (2+3)*4

条件判断:

基本语法:

[ condition ] (condition前后有空格)

判断语句:

1.两个整数的比较:

= 字符串
-lt <
-le <=
-eq ==
-gt >
-ge >=
-ne !=

2.文件权限

-r 读权限
-w 写权限
-x 执行权限

3.文件类别

-f 文件存在并是一个常规文件
-e 文件存在
-d 文件存在并是一个目录

流程控制

if判断语句

# else if
if [ condition ]
then
    程序
elif [ condition ]
    程序
fi

# else 
if [ condition ]
then
    程序
else
    程序
fi

case语句

#!/bin/bash
case $1 in
"1")
        echo "周一"
;;
"2")
        echo "周二"
;;
*)
        echo "other"
esac

for 循环

#类似于java中的增强for循环
for 变量 in 值1 值2 值3
    do
        程序
    done
    
#一般的for循环
for ((初始值;循环控制条件;变量变化))
do
    程序
done

例子1:

#!/bin/bash
#$*
num1=$*
for i in "$*"
do
        echo "numebr is $i"
done

#$@
num2=$@
for i in  "$@"
do
        echo "number is $i"
done

例子2:

sum=0
for (( i=0 ; i<10 ; i++ ))
do
        sum=$[$sum+$i]
done
echo "$sum"

while循环

while [ condition ]
do 
    程序
done

例子1:

#!/bin/bash
i=0
sum=0
while [ $i -le $1 ]
do
        sum=$[$i+$sum]
        i=$[$i+1]
done
echo "sum = $sum"

读取控制台的输入:

read (选项) (参数)
-p: 指定读取时式的提示符
-t: 指定等待时间

例子:

#!/bin/bash

函数

系统函数

basename

功能:返回完整的路径最后/的部分,常用于获取文件名

basename[pathname][suffix]
basename[string][suffix]

dirname返回路径部分

dirname[stirng][suffix]

自定义函数

function funname()
{
action;
return int;
}

例子:

#!/bin/bash
function getsum(){
sum=$[$a+$b]
echo "$sum"
}

read -p "输入数字a" a
read -p "输入数字b" b
getsum $a $b

举报

相关推荐

0 条评论