Shell编程(下)

简介: Shell编程(下)

Shell编程(上)+https://developer.aliyun.com/article/1623580

3.2获取所有参数:$#

常用于循环:

会给出参数的数量

[root@localhost sh]# vi parameter.sh  
#!/bin/bash
echo "输入的第一个参数:$1"
echo "输入的第二个参数:$2"
echo $#
~                                                            
~                                                            
~                                                            
~                                                            
~                                                            
                                                          
"parameter.sh" 7L, 97C written
[root@localhost sh]# bash parameter.sh
输入的第一个参数:
输入的第二个参数:
0
[root@localhost sh]# bash parameter.sh 10 30
输入的第一个参数:10
输入的第二个参数:30
2

3.3$*$@,含义:都是获取所有传入参数,用于后续输出所有参数。

[root@localhost sh]# bash demo.sh 10 20
直接输出$*:10 20
直接输出$@:10 20
[root@localhost sh]#

3.4 $?含义:上一条命令执行状态

[root@localhost sh]# echo "hello world"
hello world
[root@localhost sh]# echo $?
0
[root@localhost sh]#

得到0就代表执行成功,非0就是不成功.

四、运算符

  • $((运算符))
  • expr 运算符 +-*/
[root@localhost sh]# vi yunsuan.sh  
#!/bin/bash
echo "第一种运算:"
echo $((2+3))
echo "第二种运算:"
expr 2 + 3
~                                                            
~                                                            
~                                                            
~                                                            
                                                                                                                
"yunsuan.sh" 7L, 91C written
[root@localhost sh]# bash yunsuan.sh
第一种运算:
5
第二种运算:
5
[root@localhost sh]#

五、条件判断

5.1常用判断条件

1、整数之间的比较

-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-le:小于等于
-ge:大于等于
 = :字符串比较

2、按照文件权限进行判断

-r 文件  判断该文件是否存在,并且是否该文件拥有读权限
-w 文件  判断该文件是否存在,并且是否该文件拥有写权限
-x 文件  判断该文件是否存在,并且是否该文件拥有执行权限
-u 文件  判断该文件是否存在,并且是否该文件拥有SUID权限
-g 文件  判断该文件是否存在,并且是否该文件拥有SGID权限
-k 文件  判断该文件是否存在,并且是否该文件拥有SBit权限

3、按照文件类型进行判断

4、案例实操

<1>、23是否大于等于22

[root@localhost ~]# [ 23 -ge 22 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]#

<2>、hello.sh是否有写权限

[root@localhost sh]# [ -w hello.sh ]
[root@localhost sh]# echo $?
0
[root@localhost sh]#

<3>、判断 /home/atguigu/cls.txt 文件是否存在

[root@localhost ~]# [ -e /home/atguigu/cls.txt ]
[root@localhost ~]# echo $?
0
[root@localhost ~]#

<4>、多条件判断(&& 表示前一条命令执行成功之后才能执行后一条命令)

六、流程控制

6.1Shell_if判断

[root@localhost if]# vi if.sh    
#!/bin/bash
if [ $1 -eq 1 ];then
   echo "banzhang zhen"
elif [ $1 -eq 2 ];then
   echo "cls zhenmei"
fi
~                                                            
~                                                            
~                                                            
~                                                            
~                                                            
                                                           
"if.sh" 9L, 108C written
[root@localhost if]# bash if.sh 1
banzhang zhen
[root@localhost if]# bash if.sh 2
cls zhenmei

6.2Case语句

[root@localhost sh]# vi case.sh
#!/bin/bash
case $1 in
1)
        echo "banzhang"
;;
2)
        echo "cls"
;;
3)
        echo "renyao"
;;
esac
~                                                            
~                                                            
~                                                            
                                                         
"case.sh" 15L, 93C written
[root@localhost sh]# bash case.sh 2
cls
[root@localhost sh]#

6.3For循环

[root@localhost sh]# vi for.sh  
#!/bin/bash
s=0
for((i=1;i<=100;i++))
do
        s=$[$s+$i]
done
echo $s
~                                                            
~                                                            
~                                                            
~                                                            
~                                                                                                                    
"for.sh" 8L, 67C written
[root@localhost sh]# bash for.sh
5050
[root@localhost sh]#
[root@localhost sh]# vi for2.sh
#!/bin/bash
for i in $*
do
        echo "banzhangxihuan $i"
done
~                                                            
~                                                            
~                                                            
                                                         
"for2.sh" 6L, 59C written
[root@localhost sh]# ls
batch.sh  demo.sh  for.sh   hello.sh
case.sh   for2.sh  game.sh  yunsuan.sh
[root@localhost sh]# bash for2.sh linghu
banzhangxihuan linghu
[root@localhost sh]# bash for2.sh linghu zhangsan
banzhangxihuan linghu
banzhangxihuan zhangsan
[root@localhost sh]# bash for2.sh linghu zhangsan lisi
banzhangxihuan linghu
banzhangxihuan zhangsan
banzhangxihuan lisi
[root@localhost sh]#

6.4While循环

[root@localhost sh]# vi while.sh
#/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
        s=$[$s + $i]
        i=$[$i + 1]
done
echo $s
~                                                            
~                                                            
                                                                                                                  
"while.sh" 10L, 84C written
[root@localhost sh]# bash while.sh
5050
[root@localhost sh]#

七、read读取控制台输入

[root@localhost sh]# vi read.sh
#/bin/bash
read -t 7 -p "输入你的姓名:" name
echo $name
~                                                            
~                                                            
~                                                            
                                                         
"read.sh" 4L, 65C written
[root@localhost sh]# bash read.sh
输入你的姓名:令狐荣豪
令狐荣豪
[root@localhost sh]#

八、函数

8.1定义函数与函数调用

[root@localhost sh]# vi function.sh  
#!/bin/bash
demoFun(){
        echo "这是我的第一个shell函数"
}
echo "=====函数开始执行========"
demoFun
echo "=====函数执行完毕========"
~                                                            
~                                                            
~                                                            
                                                          
"function.sh" 10L, 155C written
[root@localhost sh]# bash function.sh
=====函数开始执行========
这是我的第一个shell函数
=====函数执行完毕========
[root@localhost sh]#
[root@localhost sh]# vi function.sh  
        echo "输入第一个数字:
echo "输入的两个数字之和为:
#!/bin/bash
demoFun(){
        
        echo "输入第一个数字:"
        read aNum
        echo "输入第二个数字:"
        read bNum
        return $(($aNum+$bNum))
}
echo "=====函数开始执行========"
demoFun
echo "输入的两个数字之和为:$?"
echo "=====函数执行完毕========"
~                                                            
~                                                            
~                                                            
~                                                            
~                                                            
                                                           
"function.sh" 16L, 272C written
[root@localhost sh]# bash function.sh
=====函数开始执行========
输入第一个数字:
1
输入第二个数字:
2
输入的两个数字之和为:3
=====函数执行完毕========


目录
相关文章
|
19天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
18天前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
3天前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
11 1
|
16天前
|
Shell Linux 开发工具
|
16天前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
43 12
|
18天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
1月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
38 12
|
1月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
42 5
|
2月前
|
Shell KVM 虚拟化
Shell 数组编程
【8月更文挑战第22天】 Shell 数组编程
46 10
|
2月前
|
Shell 数据处理 C++
【震撼揭秘】Python正则VS Shell正则:一场跨越编程边界的史诗级对决!你绝不能错过的精彩较量,带你领略文本处理的极致魅力!
【8月更文挑战第19天】正则表达式是文本处理的强大工具,在Python与Shell中有广泛应用。两者虽语法各异,但仍共享许多基本元素,如`.`、`*`及`[]`等。Python通过`re`模块支持丰富的功能,如非捕获组及命名捕获组;而Shell则依赖`grep`、`sed`和`awk`等命令实现类似效果。尽管Python提供了更高级的特性和函数,Shell在处理文本文件方面仍有其独特优势。选择合适工具需根据具体需求和个人偏好决定。
31 1