Bash Shell知识合集

1. chmod命令

创建一个bash shell脚本 hello.sh

powershell 复制代码
~script $ touch hello.sh

脚本创建完成后并不能直接执行,我们要用chmod命令授予它可执行的权限:

powershell 复制代码
~script $ chmod 755 hello.sh

授权后的脚本可以直接执行:

powershell 复制代码
~script $ ./hello.sh

2.指定运行脚本的解析器shebang

在脚本开头加上#!/usr/bin/env bash , 表示当前脚本会用bash解析器来执行脚本:

powershell 复制代码
~script $ ./hello.sh

如果没有指定的话,那么上面这一句会用terminal(终端)默认的脚本解析器来解析,可能会遇到执行不了的情况,因为不同的脚本语言的规则并不尽相同,遇到这种情况可以在执行时指定解析器:

powershell 复制代码
~script $ bash hello.sh

小知识:

在执行脚本时,./为什么要加上呢?是因为在类Unix系统上(Mac os 、linux)的terminal的脚本解析器执行脚本时,会在好几个路径上去寻找这个脚本文件, 但偏偏它不包括当前terminal打开的路径,所以我们通过./告诉它,我们要执行的脚本文件在当前目录下。

类似的还有:

  • #!/bin/bash
  • #!/usr/bin/env python
  • #!/usr/bin/env node

3.在脚本中创建和使用变量

4.脚本参数

5.在脚本中执行基本脚本命令或系统命令

6.bash shell的条件语句

7.while循环

8.for循环

9.break和continue关键字在循环体中的使用

10.读取系统变量

11.函数

12.管道

13. 文件读写操作

14.sleep命令

delay.sh:

powershell 复制代码
#!/usr/bin/env bash

DELAY=$1

if [ -z $DELAY ];then # 检查是不是没有传DELAY
        echo "You must supply a delay"
        exit 1
fi

echo "going to sleep for $DELAY"
sleep $DELAY # sleep
echo "we are awake now"
exit 0

我们执行一下并观察脚本退出状态:

powershell 复制代码
script % ./delay.sh  
You must supply a delay
script % echo $?
1
script % ./delay.sh 5
going to sleep for 5
we are awake now
script % echo $?
0

我们还可以加个&,把脚本程序放后台运行:

powershell 复制代码
script % ./delay.sh 5 &
[1] 18958
script % going to sleep for 5

script % 
script % we are awake now

[1]  + done       ./delay.sh 5

15.观察程序状态

#16.正则表达式的使用例子

valid.sh:

powershell 复制代码
#!/usr/bin/env bash

VALID=0

while [ $VALID -eq 0 ]
do
        read -p "input food name & price:" FOOD PRICE
        if [[ (-z $FOOD) || (-z $PRICE) ]];then
                echo food name and price are not provided
                continue
        elif [[ ! $FOOD =~ ^[A-Za-z]+$ ]];then
                echo "food name is not valid!"
                continue
        elif [[ ! $PRICE =~ ^[0-9]+$ ]];then
                echo "price is not valid!"
                continue
        fi
        VALID=1
done
echo $FOOD $PRICE
exit 0
powershell 复制代码
script % ./valid.sh
input food name & price:apple 55
apple 55

温馨提示:

下面的表达式与括号是不需要有空格分隔的。

powershell 复制代码
((表达式))
[[表达式]]

if [[ (-z $FOOD) || (-z $PRICE) ]] 等价 if [ -z $FOOD ] || [ -z $PRICE ]

更多bash脚本知识请参考官方文档

结束

相关推荐
徐先生 @_@|||24 分钟前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
tang777891 小时前
爬虫如何绕过绕过“5秒盾”Cloudflare:从浏览器指纹模拟到Rust求解之不完全指南
开发语言·爬虫·rust·cloudflare
Yuer20251 小时前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
hqwest1 小时前
码上通QT实战26--系统设置01-系统设置布局
开发语言·qt·qss·qt基础控件·qt布局控件·qt表格控件
薛定谔的猫19821 小时前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
jghhh012 小时前
传递对准MATLAB仿真程序
开发语言·matlab
编程武士3 小时前
Python 各版本主要变化速览
开发语言·python
hqwest3 小时前
码上通QT实战29--系统设置04-用户操作管理
开发语言·qt·模态窗体·addbindvalue·bindvalue
专注于大数据技术栈3 小时前
java学习--LinkedHashSet
java·开发语言·学习
这个图像胖嘟嘟3 小时前
前端开发的基本运行环境配置
开发语言·javascript·vue.js·react.js·typescript·npm·node.js