一、函数
格式如下:

小练习:
建立一个1.sh文件,输入函数内容以后运行(需要有一定的语言基础,C语言的函数和这个差不多)


二、流程控制
1、if——elif——else
格式如下:

-gt 大于 ,-eq 等于,可以通过man text查看这些符号


2、case
格式如下:



3、while
格式如下:

vim的使用以及cat查看内容不会的话看前面的文章

4、for
格式如下:

通过for循环可以选出该文件下的所有筛选选项的文件


5、until
格式如下:


三、例题

1、使用shell求解素数
function Usage(){
echo "Usage : $0 start_num end_num"
exit
}
function is_prime( ){
num=$1
local i
for (( i=2; i<${num}; i++ ));do
if [[ $[ ${num} % $i ] -eq 0 ]];then //-eq等于
return 1
fi
done
return 0
}
if [[ $# -ne 2 ]];then //-ne不等于
Usage
fi
start=$1
End=$2
if [[ ${Start} -lt 2 ]];then
Start=2
fi
for (( i=${Start}; i<=${End}; i++ ));do
is_prime $i
if [[ $? -eq 0 ]];then
sum=$[ ${sum}+ $i ]
fi
done
echo $sum


显示运行内容:
bash -x 1.sh //把文件1.sh运行的所有步骤都显示出来
单一部分调试:

2、使用素数筛求素数
if [[ $# -ne 2 ]];then
echo "Error"
exit
fi
Start=$1
End=$2
declare -a Prime
function init_prime() {
local end=$1
local i
Prime[1]=1
for (( i=2; i<=${end}; i++));do
for (( j=$[2*${i}]; j<=${end}; j+=i));do
Prime[${j}]=1
done
done
}
init_prime ${End}
for (( i=${Start}; i<=${End} ; i++));do
if [[ ${Prime[$i]}x == x ]];then
sum=$[ ${sum} + ${i} ]
fi
done
echo ${sum}

使用指令 time bash 1.sh可以查看运行的时间
3、shell实现线性筛
if [[ $# -ne 2 ]];then
echo "Error"
exit
fi
Start=$1
End=$2
declare -a Prime
sum=0
for (( i=2; i<=${End}; i++ ));do
if [[ ${prime[$i]}x == x ]];then
prime[0]=$[ ${prime[0]} + 1 ]
prime[${prime[0]}]=$i
sum=$[${sum}+$i]
fi
for (( j=1; j<=${prime[0]}; j++ ));do
if [[ $[ $i * ${prime[$j]} ] -gt ${End} ]];then
break
fi
prime[$[ $i * ${prime[$j]} ]]=1
if [[ $[ $i % ${prime[$j]} ] -eq 0 ]];then
break
fi
done
done
echo $sum

——shell编程(2)&spm=1001.2101.3001.5002&articleId=116059017&d=1&t=3&u=94577c644e054ba39eb71fb395224521)
347

被折叠的 条评论
为什么被折叠?



