Shell学习

查看当前计算机使用的shell

echo $SHELL

输出重定向

正确

覆盖

ifconfig > test.log

追加

ifconfig >> test.log

错误

覆盖

ifconfiff 2> test.log

追加

ifconfiff 2>> test.log

同时追加到文件

一起保存

命令 &>>文件

分开保存

命令>>正确文件 2>>错误文件

输入重定向

wc -c < test.log
-c:统计字节数
-w:统计单词数
-l:统计行数

多命令顺序执行

顺序执行

&&

同java

||

同java

管道符

命令1 | 命令2

命令执行的结果会传递给命令2

ls -l /etc/ | more

通配符

在这里插入图片描述

特殊符号

$()

将系统变量赋值
gg=$(date)

echo $gg
2020年 4月15日 星期三 16时28分54秒 CST

在这里插入图片描述

对于shell所有变量赋值默认是字符串

set

查看系统所有变量

set -u

在这里插入图片描述
如果变量不存在,会提示

删除变量

unset a

环境变量

环境变量在当前shell和这个shell的所有子shell中生效

export y=6

查看环境变量

env

位置参数变量

$1:代表第一个参数
$2:代表第二个参数

#!/bin/bash
sum=$((10 + 20))
echo $sum

sum1=$1
sum2=$2
sum3=$((sum1 + sum2))

echo $sum3

./sum.sh 32 48

30
80

$*、$@、$#

#!/bin/bash

# 将输入作为整体,只循环一次
for i in "$*"
        do
                echo $i
        done

# 将输入作为单个,一个一个循环
for j in "$@"
        do
                echo $j
        done

# 打印参数个数
echo $#


./canshu.sh 11 22 33 44 55 66

在这里插入图片描述

$?、$$、$!

$?

返回上一个命令执行状态,0为正确,非0为错误

$$

当前进程的进程号

$!

后台运行的最后一个进程的进程号

read

#!/bin/bash
# -p:提示文本
# -t:停留时间
read -p "xingming:" -t 30 name
echo $name

# -s 用户输入信息不现实在命令行上
read -p "mima:" -s passwd
echo -e "\n"
echo $passwd

# -n 控制用户输入的长度
read -p "xingbie:" -n 1 xingbie
echo -e "\n"
echo $xingbie

数值运算

声明整数

在这里插入图片描述

声明数组

在这里插入图片描述

查看变量类型

在这里插入图片描述

其他

在这里插入图片描述

运算

$(())

echo $((aa + bb))
33

echo $(($aa + $bb))
33

在这里插入图片描述

变量测试

在这里插入图片描述

判断

文件判断

在这里插入图片描述
在这里插入图片描述

文件权限判断

在这里插入图片描述

文件比较

在这里插入图片描述

数值比较

注意[]里面的空格

[ $i -le 100 ]
在这里插入图片描述

字符串比较

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

多重判断

在这里插入图片描述

if

单分支if

#!/bin/bash

test=$(env | grep USER | cut -d "=" -f 2)

if [ "$test" == "xiehanchao" ]
        then
                echo "is yaoyan"
fi

#!/bin/bash

test=$(env | grep USER | cut -d "=" -f 2)

if [ "$test" == "xiehanchao" ]
        then
                echo "is yaoyan"
        else
        		echo “no”
fi

多分支if

if []
then
elif []
then
else
fi

退出if

exit 错误码

case语句

#!/bin/bash

read -p "请输入y or n:" type
case $type in
        "y")
                echo "shi yes"
                ;;
        "n")
                echo "shi no"
                ;;
        *)
                echo "请输入正确的"
esac

在这里插入图片描述

循环

语法1

在这里插入图片描述

对指定目录下的所有zip文件解压


#!/bin/bash

cd /Users/xiehanchao/studyshell
ls *.zip > ziplog.log

for fileName in $(cat ziplog.log)
        do
                echo $fileName
                unzip -n $fileName -d ./tt  &> log.log
        done


while循环

#!/bin/bash

s=0
i=1
while [ $i -le 100 ]
        do
                s=$(($i+$s))
                i=$(($i+1))
        done
echo $s

在这里插入图片描述

通配符

在这里插入图片描述
在这里插入图片描述

正则表达式

在这里插入图片描述

grep取反

ls | grep -v “需要取反的字符串”

字符截取命令

提取列

在这里插入图片描述
在这里插入图片描述

print

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

awk

在这里插入图片描述

$2代表截取的列数
awk '{printf $2 "\t" $4 "\n"}' student.txt

在这里插入图片描述
截取根路径使用占比

在这里插入图片描述

设置分隔符

在这里插入图片描述

条件语句

在这里插入图片描述

sed

在这里插入图片描述

在这里插入图片描述

打印第二行

在这里插入图片描述

删除第2-4行

在这里插入图片描述

替换

替换整行

在这里插入图片描述

替换单个字符

3s:第三行
02/09:将02替换成09
g:如果有多个替换多个
在这里插入图片描述

多个命令链接

在这里插入图片描述

sort 排序

在这里插入图片描述

默认排序

在这里插入图片描述

按照字符串分割,并按照制定列排序

-n 按数字进行排序,默认是字符串

统计命令

在这里插入图片描述

统计文件夹下所有java文件行数

#!/bin/bash

s=$(ls *.sh | grep -v conutJava.sj)
count=0
for i in $s
        do
                t=$(cat $i | wc -l)
                echo $t
                count=$(($count+$t))
        done

echo "总数"$count

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值