AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 484423
Accepted
bob dylan
bob dylan
Asked: 2018-11-28 02:34:03 +0800 CST2018-11-28 02:34:03 +0800 CST 2018-11-28 02:34:03 +0800 CST

我们应该在 bash/shell 脚本中使用像 ⏰ 这样的 UTF-8 字符吗?

  • 772

如果使用以下命令启动,此处的简单代码将在我的机器上按预期工作bash:

function ⏰(){
 date
}
⏰

其他人使用它会不会有问题,还是通用的?

我想知道,因为我现在从未在其他源代码中看到过这样的东西。

编辑:有无限的可能性,它可以用来快速区分功能角色,例如使用表情符号。

? 表示可以修改或删除文件的功能,? 表示正在进行的工作,? 表示交互式菜单...

我想我们应该为所有这些创建一个标准,但这似乎是一个有趣的想法。
也许约 5 个字符的随机行可以帮助我们更好地理解代码在做什么。(当然,我们需要学习如何阅读它们。)

更多编辑:我试一试。现在,如果我在编辑器(或cat myscript.sh|grep function)中折叠所有功能,它们看起来像这样。geany(与这里相比,我的 unicode 在或我的终端中看起来好多了。)

function ⬚_1(){
function ⬚⬚_2(){
function ⬚⬚⬚_?_D(){
function ⬚⬚⬚⬚_?_X(){
function ⬚⬚⬚⬚⬚_?_Y(){
function ⬚⬚⬚⬚⬚⬚_❓_P(){
function ⬚⬚⬚⬚_?_Z(){
function ⬚⬚⬚⬚⬚_❓_U(){
function ⬚⬚⬚⬚⬚_❓_O(){

我使用了一个奇怪的缩进 ⬚ 来显示函数之间的关系,并使用符号 ?/❓ 来清楚地区分它们的作用。(当然这些不是我真正的函数名,我只是在末尾放了一个随机的字母,但即使没有它们我们也可以清楚地看到它们之间的关系。)

bash shell
  • 1 1 个回答
  • 5861 Views

1 个回答

  • Voted
  1. Best Answer
    n.st
    2018-11-28T06:29:34+08:002018-11-28T06:29:34+08:00

    对此有用的指导方针是“可移植操作系统接口”(POSIX),这是由大多数类 Unix 系统实现的一系列标准。将 shell 脚本限制为 POSIX 要求的功能通常是一个好主意,以确保它们可以跨不同的 shell 和平台使用。

    根据“Shell 命令语言”中函数定义的 POSIX 规范:

    该函数名为 fname;应用程序应确保它是一个名称(参见 IEEE Std 1003.1-2001 的基本定义卷,第 3.230 节,名称)。实现可以允许函数名中的其他字符作为扩展名。

    按照“名称”定义的链接:

    在 shell 命令语言中,仅由可移植字符集中的下划线、数字和字母组成的单词。

    该字符集仅包含 U0000 和 U007E 之间的字符。
    因此,像“⏰”(U23F0)这样的字符在符合 POSIX 的标识符中是无效的。

    您的shell 可能会接受它们,但这并不能保证其他人也会接受。
    为了能够跨不同平台和软件版本使用您的脚本,您应该避免使用这样的不合规标识符。

    • 55

相关问题

  • 从文本文件传递变量的奇怪问题

  • 虽然行读取保持转义空间?

  • 如何将带有〜的路径保存到变量中?

  • `tee` 和 `bash` 进程替换顺序

  • 运行一个非常慢的脚本直到它成功

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve