Linux学习(四):Shell编程

本文详细介绍了Linux Shell编程,包括变量、字符串、参数传递、算术运算符、流程控制结构、函数使用以及数组的使用。讲解了如何创建和执行Shell脚本,以及如何通过`source`命令加载其他文件的变量。还特别强调了在字符串处理中单引号和双引号的区别,并展示了如何在脚本中处理和传递参数。
摘要由CSDN通过智能技术生成

简介

Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务
Shell 既是一种命令语言,又是一种程序设计语言
Shell script 是一种为 shell 编写的脚本程序;
Shell 编程一般指 shell脚本编程,不是指开发shell本身
Shell 编程跟Java,PHP编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以
Linux 的 Shell 解释器 种类众多,一个系统可以存在多个 shell,可以通过 cat/etc/shells 命令查看系统中安装的 shell 解释器
Bash 由于易用和免费,在日常工作中被广泛使用,同时,Bash也是大多数Linux系统默认的Shell。

Shell 解释器

Java需要 虚拟机解释器,同理 Shell脚本也需要

在这里插入图片描述

快速入门

编写脚本

新建 /tmp/hello.sh 文件

#!/bin/bash
echo 'hello world'

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪有种 Shell。
echo 命令用于向窗口输出文本	

执行Shell脚本

方式一
在这里插入图片描述

  • 问题: bash 和 sh 是什么关系?
    在这里插入图片描述

      sh 是 bash 的 快捷方式
    

方式二(简化方式一)
在这里插入图片描述
方式三

./文件名
在这里插入图片描述
在这里插入图片描述

Shell变量

1.简介

在shell脚本中,定义变量时,变量名不加 "$",如:
	your_name="runoob.com"

注意:变量名和等号之间不能有空格。

同时,变量名的命名必须遵循如下规则:

  • 命名只能使用英文字母,数字和下划线,收个字符不能以数字开头
  • 中间不能有空格,可以使用下划线
  • 不能使用标点符号
  • 不能使用bash里的关键字(使用help命令查看保留关键字)

有效的Shell 变量名示例

RUNOOB
LD_LIBRARY_PATH
_var
var2

无效变量名

?var=123
user*name=runoob

除了显式地直接赋值,还可以用语句给变量赋值,如:
在这里插入图片描述
将 /etc 下目录的文件名循环出来

for file in `ls /etc`
或
for file in $(ls /etc)

2.使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="zhangsan" 
echo $your_name 
echo ${your_name}

在这里插入图片描述
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

for skill in java php python; do 
	echo "I am good at ${skill}Script" 
done

在这里插入图片描述

如果不给skill变量加花括号,写成echo "I am good at $skillScript",
解释器就会把$skillScript当成一个变量(其值为空)。

已定义的变量,可以被重新定义,如:

your_name="tom" 
echo $your_name 
your_name="alibaba" 
echo $your_name

在这里插入图片描述
在这里插入图片描述
3.删除变量

使用  unset 命令可以删除变量

语法

unset variable_name

变量被删除后不能再次使用,unset命令不能删除只读变量
示例

#!/bin/sh
myUrl="http://www.csdn.com"
unset myUrl

在这里插入图片描述
在这里插入图片描述
以上执行结果没有任何输出

4.只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

示例

#!/bin/sh
myUrl="http://www.csdn.com"
readonly myUrl
myUrl="http://www.baidu.com"

在这里插入图片描述

字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),
字符串可以用单引号,也可以用双引号,也可以不用引号

1.单引号

skill='java' 
str='I am goot at $skill' 
echo $str

执行结果
在这里插入图片描述
单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行)但可成对出现,作为字符串拼接使用。

2.双引号

skill='java'
str="I am goot at $skill"
echo $str

执行结果
在这里插入图片描述
双引号的优点:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值