Shell编程入门:学习条件测试与控制语句

需积分: 9 0 下载量 181 浏览量 更新于2024-08-23 收藏 663KB PPT 举报
"字符串测试——Shell编程讲座第一部分" 在Shell编程中,字符串测试是进行条件判断的关键部分。本文档是关于Shell编程的讲座,旨在帮助读者理解并掌握这一技能。我们将探讨以下几个方面: 1. **字符串比较**: - `==` 用于检查两个字符串是否相等,若相等则返回真(true)。 - `!=` 用于判断两个字符串是否不相等,若不相等则返回真。 - `-z` 检查字符串是否为空,如果字符串长度为零,则返回真。 - `-n` 判断字符串是否非空,如果字符串长度大于零,则返回真。 例如: ```bash # 检查$PATH变量是否为空 if [ -z $PATH ]; then echo "PATH is empty" else echo "PATH is not empty" fi ``` 2. **用户交互**: - `read` 命令用于从标准输入读取一行文本并将其赋值给变量。在示例中,`read name` 会等待用户输入,然后将输入内容赋值给变量`name`。 ```bash read name if [ $name = $USER ]; then echo "Name matches user" else echo "Name does not match user" fi ``` 3. **Shell类型**: - **登录shell**:用户登录时启动的第一个shell,通常记录在`/etc/passwd`文件中。可以通过`/etc/shells`文件查看系统支持的shell类型。 - **非登录shell**:用户在登录shell之后启动的shell,如终端会话或子shell。 4. **Shell脚本基本结构**: - `#!/bin/sh` 是shebang,指定解释器为/bin/sh。 - `#` 开头的行是注释。 - 脚本中的命令按照顺序执行。 - 使用`chmod u+x` 来赋予脚本执行权限,使其能够运行。 5. **Shell变量**: - **本地变量** 只在当前shell会话或脚本中有效,通过`set`显示,`unset`清除,`read`从键盘接收输入。 - **环境变量** 影响所有子进程,可通过`.profile`文件持久化设置,`env`用于查看所有环境变量。 - **位置变量** 用于传递脚本参数,如`$0`表示脚本名,`$1`到`$9`表示参数值。 - **特殊变量** 包括 `$#`(参数个数),`$*`(显示所有参数)等。 举例说明一个简单的脚本`cleanup`: ```bash #!/bin/sh # Name: cleanup # This is a general cleanup script echo "Starting cleanup...wait" rm -f /home/test/* echo "Finished cleanup" ``` 这个脚本用于清理`/home/test`目录下的所有文件。 Shell编程提供了强大的命令行工具和脚本编写能力,通过字符串测试、变量操作和控制结构,我们可以创建自动化任务,简化日常系统管理。在学习过程中,掌握这些基础概念和操作对于提升Linux系统的使用效率至关重要。