linux shell编程入门demo

1,基本的shell编程入门

接下来我们会写一个小例子来介绍如何写一个简单易懂的linux shell小脚本,我们给这个脚本其名字first.sh。接下来我说明实际的开发步骤。

使用vi编辑器创建文件,vi filename 来创建。

编写脚本

#!/bin/sh
#This is my first linux shell program
a="Hello World"
echo $a" new People coming Linux"

默认创建好的shell脚步默认没有可执行权限,我们要赋予可执行权限,chmod +x filename.

执行shell脚本./filename.sh

2,shell中的if控制结构

#! /bin/sh
#This shell is tell you how to use if to controll execute direct
a=13
if [ $a -lt 10 ];then
echo "a is bigger than 10"
else
echo "a is litter than 10"
fi
说明,if的条件判断必须加分号。if结束时反写if。

3,脚本调用另外的脚本,先判断脚本是否可以执行,如果可以执行则执行,否则提示消息。

#! /bin/sh
#This is use another shell script
file=test.sh
if [ -x "$file" ] ; then
./$file
else echo "This file can't execute"
fi

4,shell读取控制台用户输入信息,如两个数,根据两个数字的大小输出响应的提示。

read命令是一个内置命令,用于从终端或文件读取输入。read命令读取一行数据,到换行符截至。

read variable_name,从标准输入读取一行数据赋值给对应的变量。

read first last 从标准输入读取一行,直至遇到第一空白符或还行符,把前半部分赋值值给first把后半部分赋值给last。

read -a array  读入一组词,依次赋值给数组array。

read -p ;打印提示符,等待输入,并将输入赋值给REPLY

#! /bin/sh
#This is test read from console
echo "please input first variable"
read var_first
echo "please input second variable"
read var_second
if [ $var_first>$var_second ];then
echo "This is a bigger show"
else echo "This is a letter show"
fi

5,创建空白文档

touch filename

6,for循环结构

for variable_name in array

do

echo $variable_name

done














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).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值