HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • Linux

    • 10个实用的Linux技巧
    • Centos使用教程
    • Linux三剑客之awk命令
    • Linux三剑客之grep命令
    • Linux三剑客之seq命令
    • Linux之用户管理
    • Linux保姆级入门详细教程
    • Linux入门到进阶路线
    • centos开机流程详解
    • shell编程学习
    • vim快捷键
    • 八个能提升效率的Linux快捷键
    • 占用几分钟时间,让你掌握top命令
  • 其他
  • Linux
#shell #编程学习
码农阿雨
2022-05-26
目录

shell编程学习

# shell编程的一些习惯

  1. 开头指定使用什么shell,例如:bash,ksh,csh等
  2. 脚本功能描述,使用方法,作者,版本,日期等
  3. 变量名,函数名要有实际意义,函数名以动名词形式,第二个单词首字母要大写。例如:updateConfig()
  4. 缩进统一用4个空格,不用TAB

# 1、if

if 判断条件 1 ; then
  条件为真的分支代码
elif 判断条件 2 ; then
  条件为真的分支代码
else
  以上条件都为假的分支代码
fi

demo:

#!/bin/bash
# 用一个age变量接收输入的行的值
read -p "Please input your age: " age
# ~表示非,表示是否有除了0~9的以外的字符
if [[ $age =~ [^0-9] ]] ;then
    echo "please input a int"
    exit 10
    # 大于
elif [ $age -ge 150 ];then
    echo "your age is wrong"
    exit 20
    # 小于
elif [ $age -gt 18 ];then
    echo "good good work,day day up"
else
    echo "good good study,day day up"
fi

exit 退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。

# 2、case

case $name in;
PART1)
  cmd
  ;;
PART2)
  cmd
  ;;
*)
  cmd
  ;;
esac

注意,case支持一些通配符:

  *: 任意长度任意字符
  ?: 任意单个字符
  [] :指定范围内的任意单个字符
  a|b: a 或b

demo:

#判断yes or no
#!/bin/bash
read -p "Please input yes or no: " anw
case $anw in
[yY][eE][sS]|[yY])
    echo yes
    ;;
[nN][oO]|[nN])
    echo no
    ;;
*)
    echo false
    ;;
esac

# 3、循环

# 3.1 、for

# 语法一
for name in 列表 ;do
  循环体
done

# 语法二
for (( exp1; exp2; exp3 )) ;do
  循环体
done

demo:

#求出(1+2+...+n)的总和
#!/bin/bash
sum=0
read -p "Please input a positive integer: " num
if [[ $num =~ [^0-9] ]] ;then
    echo "input error"
elif [[ $num -eq 0 ]] ;then
    echo "input error"
else
	# 使用sed形成一个数组
	# `seq 1 $num` 表示一个1到$num 的连续数组
    for i in `seq 1 $num` ;do
    # 加减乘除需要这样写,否则是拼接
        sum=$[$sum+$i]
    done
    echo $sum
fi

如果不想用sed,可以这样写:

#求出(1+2+...+n)的总和
#!/bin/bash
sum=0
read -p "Please input a positive integer: " num
if [[ $num =~ [^0-9] ]] ;then
    echo "input error"
elif [[ $num -eq 0 ]] ;then
    echo "input error"
else
 	for (( i=0; i<$num; i++ ));do
        sum=$[$sum+$i]
	done
    echo $sum
fi

# 3.2、while

while 循环控制条件 ;do
  循环
done

demo:

# 100以内所有正奇数之和
#!/bin/bash
sum=0
i=1
# -le 小于
while [ $i -le 100 ] ;do
# -ne 不等于
if [ $[$i%2] -ne 0 ];then
    let sum+=i
    let i++
else
    let i++
fi
done
echo "sum is $sum"

循环也支持控制语法:

  • continue
  • break
  • shift

# 4、shift

shift可以用来向左移动位置参数。

但是在了解shift命令时,需要知道一些特殊的值:

Shell的名字 $0
第一个参数 $1
第二个参数 $2
第n个参数 $n
所有参数 $@ 或 $*
参数个数 $#

shift默认是 $1

demo:

#!/bin/bash
while (( $# > 0 ))
do
        echo "$*"
        shift
done

测试:

[root@VM-8-8-centos ~]# ./shell_shift.sh 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1

$# 是获取输入的参数个数

$*表示获取整行,然后向左移动位置参数(缩进)

# 5、信号

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#shell#编程学习
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式