Linux Shell编程实战与命令详解

3星 · 超过75%的资源 需积分: 20 43 下载量 168 浏览量 更新于2024-10-16 收藏 29KB DOC 举报
本资源是一份名为"LinuxShell脚本编程实例.doc"的文档,包含了多个Linux Shell脚本编程示例。这些脚本展示了在Linux环境下进行基础操作和逻辑控制的实用技巧。以下是各部分知识点的详细解析: 1. 第一个脚本: - `#!/bin/sh` 是她bang(#!)行,告诉系统使用bash shell解释器来执行这个脚本。 - 脚本通过`echo`语句展示了命令名($0),参数值($1, $2, $3)以及传递的参数总数(#)和当前进程ID($$)。 2. 第二个脚本: - 使用`until`循环结构,设置计数器`times`,当`times`等于3时退出循环。 - 每次循环中,打印"I love Linux.",然后休眠2秒并递增计数器。 3. "menu_shell_script.samli2004.4.19" 脚本: - 提供了一个简单的菜单,包括列表目录、改变目录、编辑文件、删除文件和退出菜单选项。 - 通过`case`结构处理用户输入的选择,执行相应的命令。 4. 变量和环境变量演示: - 定义了两个变量`var1`和`var2`,分别用于字符串和数值。 - 使用`echo`输出变量值,包括$HOME(用户家目录)、$PATH(系统路径环境变量)和$PWD(当前工作目录)。 5. `while`循环和条件判断: - 用`while`循环迭代从0到10的数字。 - 当`num`等于5时,使用`continue`跳过本次循环,执行下一个迭代。 - 计算并打印每个数字的平方。 6. Gnubash版本2.x脚本示例: - 一个邀请朋友参加聚会的简单程序,从名为"guests"的文件中读取客人名单,并可能包含一些基本的文件操作。 通过这些脚本,读者可以学习到如何在Linux环境下编写基本的交互式命令行脚本,包括处理参数、条件判断、循环、变量操作以及文件系统操作等实用技能。理解并实践这些脚本对于提高Linux终端操作效率和自动化任务非常有帮助。
2018-09-23 上传
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).