7.2,shell脚本例程

上一文中记录了shell相关的知识点,本文就之前的知识点完成简单的例程:

如下:

#! /bin/bash
echo "hello 你好!"


echo //-------字符串,数组---------------------------------
#定义字符串
str0='abc'
str1="${str0}defg123"
str=""$str0"${str1}"

#输出字符串
echo str=$str

#输出字符串长度
echo "字符串str长度为: ${#str}"

#输出子字符串0到2的字符
echo 字符串str中0到2的字符为: ${str:0:2}

#定义数组
array=(abc 123 dss 456)

#读取数组元素
echo "字符串array中0的元素为: ${array[0]}"
echo "字符串array中的所有元素: ${array[@]}"

#获取数组长度
echo "字符串array的长度为 : ${#array[@]}"
echo array_length=${#array[*]}


echo //---------------打印输出--------------------------------------
#read 使用
#echo-不换行使用
echo -e "输入文件名:\c"
read filename

#echo-输出到文件
echo “写到文件中的内容、、。。,。,。” > $filename

#printf使用
printf "%s %s\n" printf 练习0
printf "printf 练习1\n"


echo //-------------条件,循环----------------------------------------
#if -else if else使用
a=10
b=20
if [ $a == $b ]
then
	echo "a等于b"
elif [ $a -gt $b ]
then
	echo "a大于b"
elif [ $a -lt $b ]
then
	echo "a小于b"
else
	echo "故障"
fi

#for循环使用
echo -e "for循环值为: \c"
for loop in 1 2 3
do
	echo -e "$loop \c"
done
printf "\n"

#while循环使用
cnt0=1
echo -e "cnt0的值为: \c"
while(( $cnt0<=3 ))
do
	echo -e "$cnt0 \c"
	let "cnt0++"
done
printf "\n"

#until循环使用
cnt1=1
echo -e "cnt1的值为: \c"
until [ $cnt1 -eq 3 ]
do
	echo -e "$cnt1 \c"
	cnt1=`expr $cnt1 + 1`
done
printf "\n"


echo //--------case,无限循环-------------------------------
#case选择语句使用
sel0=2
case $sel0 in
	1) echo sel0为1
		;;
	2) echo sel0为2
		;;
	3) echo sel0为3
		;;
	*) echo sel0为其他值
		;;
esac

#while无限循环,break,continue使用
sel1=1
while :
do
	echo while循环开始
	case $sel1 in
		1) echo sel1为1
			;;
		2) echo sel1为2
			continue
	 	   echo continue执行失败
			;;
		3) echo sel1为3
			;;
		4) echo sel1为其他值
			break
			;;
	esac
	echo while循环1
	break
	echo while循环完成
done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值