shell bash if

本文介绍了Shell,特别是Bash的基础知识,包括subshell、echo的-e参数、批处理、内建命令、重定向、环境变量及其设置。重点讨论了如何使用if条件判断,如检查文件是否存在。同时提到了shell命令执行的四个步骤和如何查找字符串在字符串中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell: 命令解释器 、方向盘,作为内核与用户的接口。bash是它的一种

tips:

  • subshell:shell的子进程。  点命令是在subshell里执行脚本的。
  • echo -e // e参数表示遇到转义字符,需要处理,而不是一味的打印出来。
  • 批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。
  • 在脚本环境下 冒号起分隔符作用
  • 内建命令:bash自身提供的子函数,执行效率比系统命令快,不用fork。
  • & -- 后台运行命令

重定向:

prog > out.txt       //以覆盖方式将正确数据输出到指定的文件或设备上。  

prog >> out.txt //双重重定向,以添加方式,不覆盖

prog 2> out.txt   //只对错误信息输出

<   可将原由键盘输入的数据 (cat>catfile //按ctrl+d退出) 改为由文件内容来替代(cat>catfile< file.txt)

 

环境变量

将自个定义的本地变量定义为系统环境变量,保存在shell进程的环境变量表中

export xx=xx:$PATH //自定义路径时,如果有重复的路径,比如多export一次,则优先取前面的先执行。

shell命令执行四步骤:

  1. 绝对路径or相对路径,如果是前者,会立即执行。
  2. 是否别名
  3. 内部or外部命令
  4. 在PATH变量定义的路径中寻找命令文件

shell函数查询:

  • findstring | $(findstring <substr>,<str>)  //在str字串中查找substr子串,如果找到,返回sub,否则返回空。

bash

echo -e   //处理特殊字符

nice https://wiki.ubuntu.com/DashAsBinSh

if 条件判断

[ -a file ] //file存在 则为真

[ -e file ] // file存在 则为真

[ -f file ] // file为常规文件 则为真

[ -n str ] // 字串长度大于0 时为真

参考 https://www.cnblogs.com/liupuLearning/p/6206415.html

看看bashrc吧

### Bash Shell 中 `if` 语句的使用指南 #### 基本语法 在 Bash Shell 脚本编程中,`if` 语句用于条件测试并执行相应的代码块。以下是其基本结构: ```bash if [ 条件表达式 ]; then # 如果条件为真,则执行此部分代码 fi ``` 简化写法也可以省略换行符和分号: ```bash if [ 条件表达式 ]; then 代码 fi ``` 这种形式适用于简单的单行逻辑[^1]。 #### 复杂条件判断 当需要处理更复杂的场景时,可以扩展 `if` 的功能。例如,通过 `elif` 和 `else` 实现多分支控制流: ```bash #!/bin/bash read -p "请输入您的成绩:" score declare -i score if [ "$score" -ge 90 ] && [ "$score" -le 100 ]; then echo "恭喜您,您的等级是 A." elif [ "$score" -ge 80 ] && [ "$score" -le 89 ]; then echo "错,您的等级是 B." elif [ "$score" -ge 70 ] && [ "$score" -le 79 ]; then echo "还可以,您的等级是 C." elif [ "$score" -ge 60 ] && [ "$score" -le 69 ]; then echo "加油,您的等级是 D." elif [ "$score" -lt 60 ]; then echo "很遗憾,您的等级是 F." else echo "输入的成绩有误,请重新尝试." fi ``` 上述脚本展示了如何利用多个条件来评估用户的分数范围,并给出对应的评价[^3]。 #### 双重方括号支持增强特性 对于某些高级需求,推荐使用双重方括号 `[[ ... ]]` 替代单一 `[ ... ]`。它提供了额外的功能,比如模式匹配以及无需转义特殊字符的能力: ```bash #!/bin/bash read -p "请输入文件名前缀:" prefix if [[ "$prefix" =~ ^[a-zA-Z]+$ ]]; then echo "有效前缀:仅包含字母" else echo "无效前缀:应只含英文字母" fi ``` 这里运用正则表达式验证用户输入是否仅为英文字符组成[^2]。 #### 注意事项 - **字符串比较** 应该始终将变量置于双引号内以防万一为空引发错误。 - 数学运算需注意整数与浮点数的区别,在大多数情况下默认操作针对前者。 - 文件路径检测可借助 `-f`, `-d` 等选项完成特定属性查询。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值