<shell脚本>循环语句和一些相关知识细节

shell中的循环结构
for循环结构
1.数字段形式

for i in {1..100}
		do
			echo $i
		done
2.详细列出
for File in 1 2 3 4 5
	do
		echo $File
	done
3.查找循环
for c_filename in `ls *.c` 
	do 
		echo $c_filename
	done
5.语句循环
for((i=1;i<100;i++))
	do
		if((i%3= =0))
		then 
			echo $i
			continue
		fi
	done

while循环结构
1.#while循环注意为方括号[],且注意空格min=expr $min + 1相当于min自加1

min=1
	max=100
	while [ $min -le $max ]
	do
		echo $min
		min=`expr $min + 1`
	done  
	补充expr命令
		expr命令是一个手工命令行计数器,用空格隔开每个项;用反斜杠 \ 放在 shell 特定的字符前面;对包含空格和其他特殊字符的字符串要用引号括起来
		1、计算字串长度
			> expr length “this is a test”
			 14
		2、抓取字串
			> expr substr “this is a test” 3 5
			is is
		3、抓取第一个字符数字串出现的位置
			> expr index "sarasara"  a
			 2
		4、整数运算
			 > expr 14 % 9
			 5
			 > expr 10 + 10
			 20
			 > expr 1000 + 900
			 1900
			 > expr 30 / 3 / 2
			 5
			 > expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
			90
			> expr 30 * 3
			expr: Syntax error
#双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1))
i=1
		while(($i<100))
		do
			if(($i%4==0))
			then
				echo $i
			fi
			i=$(($i+1))
		done
while的do写法可以把do和while放在一行,只需要加个分号;
while(($i<100)); do
		if(($i%4==0))
		then
			echo $i
		fi
		i=$(($i+1))
	done

一些细节
echo创建文件和追加文件内容
1.

echo "#inclde<stdio.h> int main(){ return 0;}" > a.c
	即可创建一个a.c文件并且向其内容添加""中的内容
	2. echo "//创建一个主程序" >> a.c 
	向a.c文件其内容添加""中的内容,在文件原内容后追加
shell下case语句	
case $var in
		1)	echo"number is 1" ;;
		2)	echo"number is 1" ;;
		3)	echo"number is 1" ;;
		esac
shell下case语句没有break,执行完与case对于所在的语句后就自动跳出case
而shell下的break语句用在while循环下有用

shell程序的传参
使用$# $0 $1 $2 3.. 其 中 3.. 其中 3..其中#表示传参的个数$1 $2 $3表示第一、第二、第三个参


传参对比
C语言:./a.out a b c
//argc=4,argv[0]=./a.out,argv[1]=a,argv[2]=b,argv[3]=c
shell:./a.out a b c
//$#=3,$0=./a.out,$1=a,$2=b, 3 = c 在 s h e l l 下 3=c 在shell下 3=c在shell下#并不是不可变的,shell程序小shift可以使参数左移,此时$#就会-1,$1=b,$2=c

上一篇:循环结构


下一篇:Shell学习(四):流程控制