【Linux入门】Shell编程是Linux运维和服务器管理中不可或缺的一部分,尤其对于初学者而言,掌握基本的Shell脚本编写技巧非常关键。本文将详细介绍Linux Shell中的变量使用和字符串操作。 ### 一、变量的使用 #### 1. 变量命名 在Shell编程中,变量的命名规则如下: - 变量名不加美元符号 `$`,与PHP等其他语言不同。 - 变量名和等号之间不能有空格。 - 变量名只能由英文字母、数字和下划线组成,且首字符不能是数字。 - 不允许使用标点符号。 - 不能使用bash的保留关键字,可通过`help`命令查看。 例如,有效的变量名有`RUNOOB`、`LD_LIBRARY_PATH`、`_var`和`var2`,而`?var=123`和`user*name=runoob`则是无效的。 #### 2. 常用变量类型 - **系统变量**:如`PWD`、`HOME`等,可以直接通过`echo $HOME`等方式查看。 - **用户自定义变量**:可以通过`变量=值`的方式定义,如`name="一口linux"`。使用`set`命令可显示所有变量。要撤销变量,使用`unset 变量`。另外,可以使用`readonly 变量`声明为只读,无法通过`unset`撤销。此外,可以使用命令的返回值赋给变量,例如: - `A=$(ls -la)` 或 `A=`ls -la`` 将`ls -la`命令的结果赋给变量`A`。 #### 3. 举例 以下是一些基本的变量使用示例: - 定义变量`name`并赋值为"一口linux",然后输出`name`的值。 - 定义变量`number`,初始值为225,然后输出`number`的值。 - 直接输出包含变量的字符串,使用单引号和双引号的差异。 - 输出不存在变量时,默认为空。 - 使用双引号声明字符串中的变量,以及使用大括号`{}`包裹变量名。 注意,这些变量是临时的,关闭终端后会消失。 ### 二、字符串的操作 在Shell编程中,字符串操作是批处理程序中常见的任务。除了使用`awk`和`sed`等外部命令,Shell还内置了一些操作符。 #### 1. 字符串操作 - **计算字符串长度**:使用`${#变量名}`,例如`echo ${#test}`可以得到字符串`test`的长度。 - **截取子字符串**:`echo ${test:起始位置:长度}`,例如`echo ${test:5:10}`可以截取从第五个字符开始的10个字符。 - **字符串删除**: - `${test#模式}`:从字符串左侧开始删除匹配`模式`的第一个部分。 - `${test##模式}`:从字符串左侧开始删除匹配`模式`的所有部分。 - 类似的,`${test%模式}`和`${test%%模式}`分别用于从右侧删除。 例如: - 计算字符串"I love china"的长度,使用`echo ${#test}`输出12。 - 截取字符串从第五个字符开始的子串,`echo ${test:5}`输出"e china"。 - 删除字符串前缀"/",使用`echo ${test#/}`保留"c:/windows/boot.ini"。 - 删除最短匹配的前缀"/",`echo ${test#*/}`得到"windows/boot.ini"。 - 删除最长匹配的前缀"/",`echo ${test##*/}`得到"boot.ini"。 通过掌握这些基本的Shell编程知识,初学者可以开始编写简单的批处理脚本,从而更高效地管理Linux系统。随着经验的增长,可以进一步学习更多高级特性,如条件语句、循环结构以及函数等,以提高自动化运维的能力。
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/release/download_crawler_static/85402673/bg1.jpg)
![](https://csdnimg.cn/release/download_crawler_static/85402673/bg2.jpg)
![](https://csdnimg.cn/release/download_crawler_static/85402673/bg3.jpg)
剩余22页未读,继续阅读
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 108
- 资源: 7791
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- C# winform置托盘图标并闪烁演示源码.zip
- 打包和分发Rust工具.pdf
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)