正确的 Bash 和 shell 脚本变量大写 [关闭]

2023-12-09

我遇到过许多变量全部大写的 shell 脚本,我一直认为这存在严重的误解。我的理解是,按照惯例(也许很久以前就有必要),环境变量全部大写。

但在像 Bash 这样的现代脚本环境中,我一直更喜欢临时变量的名称小写和大写的约定仅适用于导出(即环境)变量。例如:

#!/usr/bin/env bash
year=$(date +%Y)
echo "It is $year."
export JAVA_HOME="$HOME/java"

这一直是我对事物的看法。有没有权威性同意或不同意这种方法的消息来源?


按照惯例,环境变量 (PAGER, EDITOR, ...) 和内部 shell 变量 (SHELL, BASH_VERSION, ...) 均大写。所有其他变量名称都应小写。

请记住,变量名称区分大小写;此约定可避免意外覆盖环境变量和内部变量。

遵循此约定,您可以放心,您不需要了解 UNIX 工具或 shell 使用的每个环境变量以避免覆盖它们。如果它是您的变量,请将其小写。如果导出,请将其大写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确的 Bash 和 shell 脚本变量大写 [关闭] 的相关文章

  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • 如何在递归调用函数时阻止 bash 创建子 shell

    这是一个计算阶乘的简单 shell 函数 bin bash function factorial if 1 lt 2 then echo 1 else echo 1 factorial 1 1 fi factorial 1 但我发现这个脚本
  • Mongodb shell mongo:通常只允许每个套接字地址(协议/网络地址/端口)使用一次。对于套接字:0.0.0.0:27017

    前两天还好好的 现在mongod不起作用 甚至echo ps A grep mongo没有打印任何内容 但它警告错误 每个套接字地址只有一种用途 怎么杀掉它 我也尝试过不同的随机端口 他们怎么可能也失败呢 D mongodb win32 x
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • 如何制作一个 bash 脚本来同时创建 40 个程序实例?

    我是新来的bash and Linux 我编写了一个程序 我想创建多个同时实例 现在 我通过打开 10 个新终端 然后运行该程序 10 次 我运行的命令是php home calculatedata php 使用 bash 脚本执行此操作的
  • shell脚本中的\r字符

    我在尝试执行 shell 脚本时收到以下错误 r command not found line 2 请提出同样的解决方案 以下是脚本中使用的初始行 bin sh if lt 1 then echo ERROR Environment arg
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • bash 行长度限制从何而来?

    在运行 Bash 4 4 19 标准安装 的 Solaris 11 上 输入行似乎有 256 个字符的限制 我想了解这个限制从何而来 我浏览了手册页 但没有找到任何解决此问题的内容 仅当未使用 readline 库时才会发生这种情况 在下面
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt

随机推荐

  • Magento 客户网格 - 掩码电子邮件地址

    我要求呼叫中心代理根据电子邮件地址搜索客户 但我不想在客户网格中显示电子邮件地址 除非他们搜索电子邮件 我怎样才能做到这一点 Magento 版本 1 4 1 1 先感谢您 编写一个扩展的自定义模块 app code core Mage A
  • 是否有可能从 cin 读取一个空字符串,并且仍然从 cin.good() 得到 true ?

    我的问题基于这个简单的代码 include
  • jQuery 根据计数和日期/时间(时间戳)对 div 元素进行排序

    我目前使用排序函数根据计数值对 div 元素进行排序 这是现在的做法 我不确定这是否是一种有效的方法 list list item sort sortDescending appendTo list function sortDescend
  • 为什么 getEntry(Object key) 没有暴露在 HashMap 上?

    这是我的用例 我有一个逻辑上等于我的 HashMap 键的对象 但不是同一个对象 不是 我需要从 HashMap 中获取实际的键对象 以便我可以对其进行同步 我知道我可以迭代 ketSet 但这与散列相比很慢 查看 java util Ha
  • 为什么java ThreadPoolExecutor在发生RuntimeException时杀死线程?

    为什么在调用execute方法时 worker中会重新抛出unhanded异常 因此 将在下次执行时创建新线程以最大化线程数 为什么java ThreadPoolExecutor在发生RuntimeException时杀死线程 我只能猜测原
  • iOS 3DES 与 ECB 返回一半正确数据

    使用 3DES ECB 算法加密密码时遇到问题 这是我使用的代码 class func encryptPassword pass String gt String let keyString 123456789012345678901234
  • 在 C# 中重用数组

    所以我正在优化一个非常非常频繁地使用字节数组的C 程序 我编写了一种回收池的东西来重用必须由GC收集的数组 像那样 public class ArrayPool
  • 将 mysql 转换为 pdo

    所以我有一个应该处理所有数据执行操作的函数 sql function loadResult sql this gt connect sth mysql query sql rows array while r mysql fetch obj
  • 使用 fastxml.jackson 将 JSON 解析为 Java 记录

    根据设计 Java 记录不能从另一个对象继承 请参阅为什么Java记录不支持继承 所以我想知道实现以下目标的最佳方法是什么 鉴于我的 JSON 数据包含具有一些通用数据 独特数据的对象 例如 类型 宽度和高度适用于所有形状 但根据类型 它们
  • AngularJS 和 jquery 移动

    我通过 AngularJS 中的控制器将 html partial 加载到 ng view 指令中 html 部分看起来像这样 div ul li a href detailsuser a A a li li a href detailsu
  • 将 Http“Post”请求发送到 C 或 C++ 中的 PHP 代码

    我正在尝试向我的 php 文件发送 post 请求并获取信息 它工作正常 但是 在打印 php 文件中的响应之前 它还会打印一些内容 这就是它打印的内容 first HTTP 1 1 200 OK Date Fri 20 Apr 2012
  • ASP.NET MVC 自定义路由 很长的自定义路由在我脑海中没有出现

    今天我花了几个小时阅读有关在 ASP NET MVC 中进行自定义路由的内容 我可以理解如何执行任何类型的自定义路由 如果它从默认路由扩展或类似于 小于默认路由 但是 我正在尝试找出如何执行类似于以下内容的路线 Language Langu
  • 对自定义类的 IEnumerable 中具有特定 ID 的项目求和

    CustomClass int ID int numberToSum float numToAverage IEnumerable
  • Volley速度慢并导致内存泄漏

    在我的项目中 我使用 volley 下载 JSON 流 我解析该流并将其显示在列表视图中 我使用以下方法加载数据 private void loadEventData int year final int month get volley
  • 在您的 delphi 应用程序中托管 WSH(VBScript、JavaScript)?

    我正在寻找从我的 Delphi 应用程序执行用户提供的脚本 是否可以在我的应用程序中托管 Windows 脚本宿主引擎并为其提供要执行的脚本 或者 有更好的方法来解决这个问题吗 P S 我不是在寻找第三方组件 这是完全可能的 并且有大量代码
  • 替换每行中第一次出现的位置

    假设我有一个格式如下的文档 word1 word2 word3 word4 word5 word6 word7 word8 我该如何使用sed将第一次出现的空格替换为逗号后跟空格 以便文档如下所示 word1 word2 word3 wor
  • 在从命令行调用的 Jython 脚本中使用 UCanAccess

    操作系统 Windows7 Jython2 7 0FR 最终版本 尝试将 Gord Thompson 的解决方案与 Jython 结合使用 在没有 ODBC 的情况下从 Java 操作 Access 数据库 我可以让 Ucanaccess
  • 如何在核心java中实现图?

    我有一个有向未加权图 给出了节点的数量和节点之间的所有链接 我尝试使用向量数组来完成该任务 但 java 不支持它 ArrayList 和 Vectors 支持随机访问迭代器 但无法在 java 中执行此操作 因为我是新手 我不想使用二维矩
  • 排序合并的数据框

    作为一个相当新的 R 程序员 我似乎遇到了一个奇怪的问题 可能是我对 R 缺乏经验 在读取连续文件并将其合并到单个数据帧中后 我发现顺序未按预期对数据进行排序 我在每个文件中有多个引用 但每个文件引用在不同时间获得的测量数据 这是代码 li
  • 正确的 Bash 和 shell 脚本变量大写 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我遇到过许多变量全部大写的 shell 脚本 我一直认为这存在严重的误解 我的理解是 按照惯例 也许很久以前就有必要 环境变量全部大写 但在像 Bash 这样的现代脚本环境中 我一直更喜欢