AcWing Linux基础课第三节笔记3

12 篇文章 0 订阅

1、该系列为ACWing中Linux基础课,已购买正版,课程作者为yxc
2、为啥写在这儿,问就是oneNote的内存不够了QAQ
3、shell语法好多呀笔记写的我yue出来了

Shell语法(三)

判断语句

if…then形式

判断的是condation的exit code

1、单层if

if condition
then
    语句1
    语句2
    ...
fi

示例

a=3
b=4

if [ "$a" -lt "$b" ] && [ "$a" -gt 2 ]
then
    echo ${a}在范围内
fi
============================================
3在范围内

2、单层if-else

if condition
then
    语句1
    语句2
    ...
else
    语句1
    语句2
    ...
fi

示例:

a=3
b=4

if ! [ "$a" -lt "$b" ]
then
    echo ${a}不小于${b}
else
    echo ${a}小于${b}
fi
==========================
3小于4

3、多层if-elif-elif-else

if condition
then
    语句1
    语句2
    ...
elif condition
then
    语句1
    语句2
    ...
elif condition
then
    语句1
    语句2
else
    语句1
    语句2
    ...
fi

示例:

a=4

if [ $a -eq 1 ]
then
    echo ${a}等于1
elif [ $a -eq 2 ]
then
    echo ${a}等于2
elif [ $a -eq 3 ]
then
    echo ${a}等于3
else
    echo 其他
fi
==============================
其他

case…esac形式

case $变量名称 in
    值1)
        语句1
        语句2
        ...
        ;;  # 类似于C/C++中的break
    值2)
        语句1
        语句2
        ...
        ;;
    *)  # 类似于C/C++中的default
        语句1
        语句2
        ...
        ;;
esac

示例:

a=4

case $a in
    1)
        echo ${a}等于1
        ;;  
    2)
        echo ${a}等于2
        ;;  
    3)                                                
        echo ${a}等于3
        ;;  
    *)
        echo 其他
        ;;  
esac
==============================
其他

循环语句

1、for…in…do…done

for var in val1 val2 val3
do
    语句1
    语句2
    ...
done

示例:
ls是用字符串的形式返回文件名;
seq命令可以返回一个序列;

输出a 2 cc,每个元素一行:
for i in a 2 cc
do
    echo $i
done
==================分割线=================
输出当前路径下的所有文件名,每个文件名一行:
for file in `ls`
do
    echo $file
done
==================分割线=================
输出1-10
for i in $(seq 1 10)
do
    echo $i
done
==================分割线=================
使用{1..10} 或者 {a..z}
for i in {a..z}
do
    echo $i
done

2、for ((…;…;…)) do…done

for ((expression; condition; expression))
do
    语句1
    语句2
done

示例:

输出1-10,每个数占一行:
for ((i=1; i<=10; i++))
do
    echo $i
done

3、while…do…done循环

while condition
do
    语句1
    语句2
    ...
done

示例:

文件结束符为Ctrl+d,输入文件结束符后read指令返回false
while read name
do
    echo $name
done

4、until…do…done循环
当条件为真时结束:

until condition
do
    语句1
    语句2
    ...
done

示例:

当用户输入yes或者YES时结束,否则一直等待读入
until [ "${word}" == "yes" ] || [ "${word}" == "YES" ]
do
    read -p "Please input yes/YES to stop this program: " word
done

5、break命令
跳出当前一层循环,注意与C/C++不同的是:break不能跳出case语句,只能跳出当前该层循环。

示例:

每读入非EOF的字符串,会输出一遍1-7
while read name
do
    for ((i=1;i<=10;i++))
    do
        case $i in
            8)
                break
                ;;
            *)
                echo $i
                ;;
        esac
    done
done

该程序可以输入Ctrl+d文件结束符来结束,也可以直接用Ctrl+c杀掉该进程。

6、continue命令
跳出当前该层循环:

该程序输出1-10中的所有奇数。
for ((i=1;i<=10;i++))
do
    if [ `expr $i % 2` -eq 0 ]
    then
        continue
    fi
    echo $i
done

7、死循环的处理方式
如果终端可以打开该程序,则输入Ctrl+c即可(参考y总第一次删库)。

否则可以直接关闭进程

  • ps aux返回当前打开的所有进程;
  • 使用top命令找到进程的PID (查看当前系统运行的所有进程),shift M按照内存排序;
  • 输入kill -9 PID即可关掉此进程

未完待续;
我啥时候才能学到搭平台啊,哭了QAQ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值