ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-10-17 13:03:06  阅读:163  来源: 互联网

标签:语句 do shell min expr while echo 细节


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

标签:语句,do,shell,min,expr,while,echo,细节
来源: https://blog.csdn.net/hwf1877655/article/details/120809752

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有