Linux Shell脚本:怎样变得智能(基础语法)

本文详细解读了Bash shell中条件测试(如[a==b])与控制操作符(如if, for, while),包括'&'&&', '||', ';'的逻辑关系,以及for和while循环的实例。深入介绍了变量处理、命令替换和条件表达式在脚本中的运用。
摘要由CSDN通过智能技术生成

1、条件测试

 

 

 

 

 控制操作符

 

1、“ ;” 两条命令只有顺序关系,没有逻辑关系
2、“ && ”,只有第一条命令执行成功,才会执行后面的
3、“A || B” 只要其中一条执行成功即可 ,A成功不会执行B,A不成功才会执行B

 

 

 

if语句 

 

 

for循环 

 

 

 

#!/bin/bash

for i in aa bb cc dd
do
        echo $i
done

for i in {1..5}
do
        echo $i
done


for i in $(cat ./test.txt)
do
        echo $i
done

for ((i=1;i<=9;i++))
do
    for((j=1;j<=i;j++))
    do
        echo -n "$i*$j=$[i*j] "
    done
    echo
done

 

注意:
1、$(echo Yes) 这种形式将命令的执行结果作为变量等价于`echo Yes`
2、$[a+b]和for循环中的变量可以不用$修饰
3、[ a == b ] 是条件测试
4、$[a+b] 等价于$((a+b))
5、echo "a+b" |bc

 while循环

综合 

 

1、变量赋值不能有空格;
2、单引号不会扩展 $a  ,双引号会扩展,``反引号等同于$(cat ls -l)
3、shell脚本有两种变量引用方式 $x ${x}
4、【运算符号$[ ] 】内变量可以不用$符号去引用     a=1; b=2 ;$[a+b];  ===》 $((a+b))
5、read -p "please input age"  i  (-p:可以输入描述信息用于交互)
read -s  i(-s:隐藏交互信息)
read -t 3 i   (-t:3秒未输入返回)

6、echo -n 不回车
echo -e "\033[34mOK\033[0m" 增加扩展属性:颜色属性

7、grep 可以通过执行某条命令后 通过管道手动抓取某些信息  
ifconfig ens33 |grep "inet "

也可以直接抓取某些信息通过某些文件或者路径
grep "model name" /proc/cpuinfo
grep -r "model name" ./

8、条件测试需要有空格  [ -z  "$a" ]

9、tr命令删除多余字符
hcc@ubuntu:~$ echo "aaaabc" | tr -s "a"
abc

10、cut 命令过滤某一列 : -d 以什么为分隔符  -f 第几列
hcc@ubuntu:~$ head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
hcc@ubuntu:~$ 
hcc@ubuntu:~$ 
hcc@ubuntu:~$ 
hcc@ubuntu:~$ 
hcc@ubuntu:~$ ^C
hcc@ubuntu:~$ cut -d: -f1 /etc/passwd   
root
daemon
bin
sys
sync

11、if [ 条件测试 ];then  //if后面也需要空格 ,条件测试也需要,中间的执行语句不需要
    fi

如果if 多个条件需要[[ $a==$b && $c==$d   ]]

12、for i in 1 2 3      //for 后面也需要空格,中间的执行语句不需要
    do
        echo "i=$i"
    done
    
    for ((i=1;i<5;i++))      //for 后面也需要空格,中间的执行语句不需要
    do
        echo "i=$i"
    done
    
    for i in {1..10}      //省略做法
    do
        echo "i=$i"
    done
    
    for i in $(cat xxx.txt)     //也可以将某条命令作为变量的来源
    do
        echo "i=$i"
    done
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值