0
点赞
收藏
分享

微信扫一扫

【Linux 从基础到进阶】系统安全加固策略

冶炼厂小练 2024-08-12 阅读 8

1. shell脚本基础概念

1.1概念

1.2创建和执行

2.变量

2.1用户自定义变量

2.2位置变量

2.3预定义变量

2.4环境变量

3.功能语句

3.1说明性语句

3.2功能性语句

3.2.1 read

3.2.2 expr

例子:

#!/bin/bash

I=0
#I=`expr $I + 1`
((++I ))
echo $I

read -p "input: " a b c d
#NUM=`expr $a \* $b + $c - $d / $b`
((NUM=a*b+c-d/b))
#NUM=$((a*b+c-d/b))
echo $NUM

也可以用(())进行数学运算

3.2.3 let

3.2.4 test

#!/bin/bash

#测试字符串
VAR="hello"
test $VAR = "hello"
echo $?

test $VAR != "hello"
echo $?

test -z $VAR
echo $?

test -n $VAR
echo $?

#测试整数
test 10 -eq 5
echo $?

test 10 -ne 5
echo $?

test 10 -gt 5
echo $?

test 10 -lt 5
echo $?

#测试文件属性
read -p "input filename: " FILE
test -e $FILE
echo $?

test -f $FILE
echo $?

test -d $FILE 
echo $?

3.3结构性语句

3.3.1 if语句

	if 条件
	then
		命令表1
	else
		命令表2
	fi
if 条件1
then
    命令表1
elif 条件2
then
    命令表2
fi
if 条件1
then
    if 条件2
    then
        命令表1
    fi
else
    命令表2
fi

例子:

3.3.2 case语句

case 变量 in
模式1)
	命令表1
	;;
模式2)
	命令表2
	;;
*)
	命令表n
	;;
esac

例子:

#!/bin/bash

read -p "input score: " SCORE
case $SCORE in
100|9[0-9])
    echo "A"
    ;;
8[0-9])
    echo "B"
    ;;
7[0-9])
    echo "C"
    ;;
6[0-9])
    echo "D"
    ;;
[0-9]|[1-5][0-9])
    echo "lost"
    ;;
*)
    echo "input err"
    ;;
esac

3.3.3 for循环

for 变量名 in 单词表
do
    命令表
done

例子:

3.3.4 while

while 命令或表达式
do
    命令表
done

#!/bin/bash

i=1
SUM=0
while test $i -le 10
do
    #((SUM=SUM+i))
    #SUM=`expr $SUM + $i`
    let SUM=SUM+i
    ((i++))
done
echo $SUM

SUM=0
##################################
for ((i=1;i<=10;i++))
do
    ((SUM=SUM+i))
done
echo $SUM

3.3.5 循环控制语句

#!/bin/bash

for ((i=0;i<5;i++))
do
    for((j=0;j<5;j++))
    do
        if [ $j -eq 3 ]
        then 
            #break 1
            #break 2
            #continue 1
            continue 2
        fi 
        echo "$i : $j"  #4 2
    done 
done

4.数组

4.1数组的赋值

4.2数组的调用

#!/bin/bash

read -a arr
MIN=${arr[0]}
n=${#arr[@]}
for ((i=0;i<n;i++))
do
    if [ $MIN -gt ${arr[i]} ]
    then
        MIN=${arr[i]}
    fi
done
echo $MIN

#!/bin/bash

if [ -d aa ]    #如果当前目录下有aa目录就删除然后创建
then
    rm -r aa 
fi

mkdir aa

num=0
filelist=`ls`    #将当前目录下所有文件赋值给filelist变量
for file in $filelist  #for file in *  #用file遍历当前目录下所有文件
do
    if [ -f $file ]        #如果是普通文件就复制到aa目录下
    then
        cp $file ./aa        
        ((num++))            #计算文件个数
    fi
done
echo $num
举报

相关推荐

0 条评论