深圳做自适应网站制作,网站上的3d产品展示怎么做,手机软件开发应用,网站建设的后如何发布一、教程
Shell 是一个用 C 语言编写的程序#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序#xff0c;这个应用程序提供了一个界面#xff0c;用户通过这个界面访问操作系统内核的服务。
Shell…一、教程
Shell 是一个用 C 语言编写的程序它是用户使用 Linux 的桥梁。Shell 既是一种命令语言又是一种程序设计语言。 Shell 是指一种应用程序这个应用程序提供了一个界面用户通过这个界面访问操作系统内核的服务。
Shell 脚本
Shell 脚本shell script是一种为 shell 编写的脚本程序。 业界所说的 shell 通常都是指 shell 脚本但读者朋友要知道shell 和 shell script 是两个不同的概念。
常见的 Shell 类型
Bash (Bourne Again Shell)是最常见的 Linux 和 macOS 默认 Shell功能强大且易用。sh (Bourne Shell)经典的 Unix Shell许多其他 Shell 都是基于它扩展的。zsh (Z Shell)功能强大的 Shell比 Bash 更加灵活支持自动补全和更强的脚本功能。fish (Friendly Interactive Shell)注重易用性和交互性提供了丰富的提示和补全功能。csh (C Shell)语法和 C 语言类似曾在一些早期的 Unix 系统中广泛使用。
第一个shell脚本
1.使用 nano 创建脚本
打开终端。输入以下命令来创建并编辑脚本
nano myscript.sh 3. 输入您的脚本内容。例如 #!/bin/bash echo Hello, World!
按 Ctrl O 保存文件然后按 Enter 确认文件名。按 Ctrl X 退出编辑器。
2. 赋予脚本执行权限
chmod x myscript.sh 使脚本变为可执行文件。
3. 运行脚本
如果脚本位于当前目录
./myscript.sh
如果脚本不在当前目录您需要提供脚本的完整路径
/path/to/myscript.sh
4. 运行结果
Hello, World!
二、Shell 变量
在 Shell 编程中变量是用于存储数据值的名称。 变量名的命名须遵循如下规则
只包含字母、数字和下划线 变量名可以包含字母大小写敏感、数字和下划线 _不能包含其他特殊字符。不能以数字开头 变量名不能以数字开头但可以包含数字。避免使用 Shell 关键字 不要使用Shell的关键字例如 if、then、else、fi、for、while 等作为变量名以免引起混淆。使用大写字母表示常量 习惯上常量的变量名通常使用大写字母例如 PI3.14。避免使用特殊符号 尽量避免在变量名中使用特殊符号因为它们可能与 Shell 的语法产生冲突。避免使用空格 变量名中不应该包含空格因为空格通常用于分隔命令和参数。
1. 使用变量
使用一个定义过的变量只要在变量名前面加美元符号即可如
#!/bin/bash
my_namexaye
echo ${my_name}
echo $my_name变量名外面的花括号是可选的加不加都行加花括号是为了帮助解释器识别变量的边界和Kotlin类似。
2. 只读变量
使用 readonly 命令可以将变量定义为只读变量只读变量的值不能被改变。
#!/bin/bashmyUrlhttps://www.google.com
readonly myUrl
myUrlhttps://www.runoob.com运行脚本结果如下
./myscript.sh: line 4: myUrl: readonly variable3. 删除变量
使用 unset 命令可以删除变量。语法 unset variable\_name 变量被删除后不能再次使用。unset 命令不能删除只读变量。
#!/bin/shmyUrlhttps://www.runoob.com
unset myUrl
echo $myUrl执行将没有任何输出。
xayePS2022YZEUYRLD:/mnt/e/Android-NDK-C/sh$ ./myscript.shxayePS2022YZEUYRLD:/mnt/e/Android-NDK-C/sh$4. 变量类型
4.1 字符串变量 存储字符或字符串默认情况下 Shell 中的变量都被视为字符串类型。
nameXaye
greetingHello, ${name}!
echo $greeting不需要声明类型。使用双引号可以防止空格或特殊字符被误解释。使用单引号禁止变量替换。
4.2 数组变量 用于存储多个值下标从 0 开始。 定义array(value1 value2 value3) 访问元素echo ${array[0]} # 输出第一个元素 操作数组 获取所有元素 ${array[]} 或 ${array[\*]} 获取数组长度 ${#array[]} 示例
colors(red green blue)
echo ${colors[1]} # 输出 green
echo ${colors[]} # 输出 red green blue
echo ${#colors[]} # 输出 34.3 整数变量 用于存储和操作整数值需要指定计算模式。
num42算术运算 使用 $((expression)) 进行整数运算。
num$((5 10))
echo $num # 输出 15增加或减少
num$((num 1))
echo $num # 输出 16注意默认情况下Shell 不支持浮点运算可借助 bc 或其他工具实现。
4.4 环境变量 系统级变量影响系统环境或子进程行为。 常见环境变量
$PATH可执行文件的搜索路径。$HOME用户的主目录。$USER当前登录的用户名。$SHELL当前使用的 Shell 类型。
操作环境变量 查看当前环境变量 env设置新的环境变量 export VARvalue查看某个变量 echo $VAR4.5 特殊变量 Shell 内置的特殊变量用于存储命令、脚本参数或运行状态信息。
常见特殊变量 $0当前脚本或命令名。$1, $2, ...命令行参数。$所有参数逐个分开。$\*所有参数作为一个字符串。$#参数个数。$?上一个命令的退出状态。$$当前 Shell 的进程 ID。$!最近运行的后台任务的进程 ID。
4.6 总结
类型说明示例字符串变量存储字符或字符串Shell 默认变量类型。nameAliceecho Hello, $name!数组变量存储多个值支持索引访问及操作。array(val1 val2)echo ${array[0]}整数变量存储和操作整数支持算术运算。num$((5 3))echo $num环境变量系统级变量影响系统环境或子进程。$PATH, $HOME, export VARvalue特殊变量内置变量用于存储命令、参数及状态信息。$, $\*, $?, $$, $!
5. Shell 字符串
字符串是shell编程中最常用最有用的数据类型除了数字和字符串也没啥其它类型好用了字符串可以用单引号也可以用双引号也可以不用引号。 5.1 单引号 内容完全原样输出变量或特殊字符不会被解析。
strHello $USER
echo $str # 输出Hello $USER5.2 双引号 支持变量和特殊字符的解析。
nameXaye
greetingHello, $name!
echo $greeting # 输出Hello, Xaye!5.3 拼接字符串
nameXaye
full_greetingHello, $name!
echo $full_greeting # 输出Hello, Xaye!5.4 获取字符串长度 使用 ${#变量名} 获取字符串的长度
strHello, World
echo ${#str} # 输出125.5 提取字符串 使用 ${变量名:起始位置:长度} 提取子字符串
strHello, World
echo ${str:7:5} # 输出World起始位置从 0 开始如果只指定起始位置则提取到字符串末尾。
echo ${str:7} # 输出World5.6 查找字符串 使用 expr index 或内置方法查找子字符串的位置。 示例 1 expr 方法
strHello, World
echo $(expr index $str W) # 输出8示例 2内置查找
strHello, World
echo ${str%%W*} # 输出Hello, 6. Shell 数组
bash支持一维数组不支持多维数组并且没有限定数组的大小。 类似于 C 语言数组元素的下标由 0 开始编号。获取数组中的元素要利用下标下标可以是整数或算术表达式其值应大于或等于 0。 6.1 定义数组 用括号 () 定义数组数组元素用空格分隔。
arr(value1 value2 value3)单独赋值可以为特定下标的元素单独赋值。
arr[0]value1
arr[1]value2
arr[2]value36.2 读取数组 读取单个元素通过下标访问数组元素下标从 0 开始。
echo ${arr[0]} # 输出value1读取所有元素使用 ${数组名[]} 或 ${数组名[\*]}。
echo ${arr[]} # 输出value1 value2 value3
运行
xayePS2022YZEUYRLD:/mnt/e/Android-NDK-C/sh$ ./myscript.sh
value1 value2 value36.3 获取数组的长度 语法 ${#数组名[]}
echo ${#arr[]} # 输出3
示例代码
# 定义数组
fruits(apple banana cherry)# 读取单个元素
echo ${fruits[1]} # 输出banana# 读取所有元素
echo ${fruits[]} # 输出apple banana cherry# 获取数组长度
echo ${#fruits[]} # 输出37. Shell 注释
7.1 单行注释 使用 # 开头表示该行的内容是注释不会被执行。
# 这是一个单行注释
echo Hello, World! # 输出内容7.2 多行注释 Shell 不支持原生的多行注释但可以通过以下方法实现
连续使用 #** 注释多行**
# 这是第一行注释
# 这是第二行注释
# 这是第三行注释使用 : : 空格 单引号 或 : EOF ... EOF** 的方法**
:
这是第一行注释
这是第二行注释
这是第三行注释EOF
这是第一行注释
这是第二行注释
这是第三行注释
EOF