首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

shell脚本对编码和行尾符敏感吗

问: 我正在macOS上制作一个NW.js应用程序,并想通过双击图标在开发模式下运行该应用程序。在第一步中,我试图使我的shell脚本正常工作。...我输入了完全相同的指令,然后...现在它工作起来没有任何问题。 用 diff 对比两个文件的差异显示完全没有差异。 有什么区别?是什么导致第一个脚本无法运行?我怎样才能知道? 答: 是的。...Bash脚本对行结束很敏感,无论是在脚本本身还是在它处理的数据中。它们应该有Unix风格的行结束符,即每行以换行符结束(ASCII中的十进制10,十六进制0A)。...Bash将shebang之后的第一行(由一个回车字符组成)解释为要运行的命令/程序的名称。...因为没有名为^M的命令,所以它输出: command not found 因为没有名为"src"^M(或src^M)的目录,所以它输出: no such file or directory 它将install

17720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    解决bash syntax error near unexpected token from

    Bash脚本中有一些特殊字符或符号(如​​$​​、​​(​​、​​)​​等),如果没有正确转义或引用,就会导致语法错误。...通过这些方法,我们可以成功解决这个问题,使得Bash脚本运行无误。假设我们正在编写一个Bash脚本,用于统计一个文件夹中所有文件的行数,并输出总行数。以下是示例代码:bashCopy code#!...Bash是许多Linux和Unix系统中默认的命令行解释器,因此Bash脚本在这些系统上得到广泛的应用。...Bash脚本是一种直接在命令行环境下运行的脚本,它不需要编译或链接过程,可以通过命令行或脚本文件直接运行。...跨平台性:Bash脚本可以在各种Linux/Unix系统上运行,并且可以通过安装Bash解释器在其他平台上运行。

    81530

    从npm、npx说起,到shell

    背景:目前整个我们前端工程栈有多处 CLI(包括工具、模板等等),CLI 带来了巨大的便利性,但其在 Windows 下执行往往和 Mac/Unix 系统下表现不同。...如果Command1命令运行失败,则继续运行Command2命令 命令 说明 echo 在屏幕输出一行文本,可以将该命令的参数原样输出 -n:可以取消末尾的回车符,使得下一个提示符紧跟在输出内容的后面...后面就是脚本解释器的位置,Bash 脚本的解释器一般是/bin/sh或/bin/bash。 #!/bin/sh # 或者 #!/bin/bash #!与脚本解释器之间有没有空格,都是可以的。...错误处理 如果脚本里面有运行失败的命令(返回值非0),Bash 默认会继续执行后面的命令(只是显示有错误,并没有终止执行)。 这种行为很不利于脚本安全和除错。.../usr/bin/env bash set -euxo set -u:遇到不存在的变量就会报错,并停止执行(默认忽略跳过) set -x:在运行结果之前,先输出执行的那一行命令(默认情况下,脚本执行后,

    3.9K20

    Linux 命令行的艺术

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...Bash 变量要用引号括起来,比如 " 在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    4.5K10

    一篇文章学习 linux 命令

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    2.2K22

    linux下的shell脚本编程

    Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。...是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。通常/bin/sh是指向/bin/bash的。 但后面的字符 # 表示注释,#后面的内容将被忽略。...echo命令用于向窗口输出文本。 运行Shell脚本有两种方法。 作为可执行程序 将上面的代码保存为test.sh,并 cd 到相应目录: $ chmod +x ....通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。.../bin/sh myUrl="http://see.xidian.edu.cn/cpp/u/xitong/" unset myUrl echo $myUrl 上面的脚本没有任何输出。

    2.4K20

    shell脚本的调试

    提示: 脚本不是你写的或者windows下开发的脚本,你检查脚本明明没有问题,但就是执行出现错误,要想到执行dos2unix格式化下。 好习惯:每次写脚本都执行dos2unix格式化下。...dos2unix 使用bash命令参数调试 [root@localhost ~]# sh [-nvx] add.sh 参数: -n:不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示。...-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误也会给出错误提示 -x:将执行的脚本内容及输出显示屏幕上,这个是对调试很有用的参数。...使用set命令调试部分脚本内容 set命令可辅助脚本调试,以下是set命令常用的调试选项: set -n 读命令但并不执行 set -v 显示读取的所有行 set -x 显示所有命令及其参数。...Shell帮助与资料推荐 http://www.gnu.org/software/bash/manual/bash.html man bash Unix Shell 范例精解(第4版)老男孩推荐 Unix

    61220

    GitHub 60000+ Star 登顶,命令行的艺术!

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something (但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    93220

    命令行的艺术

    在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something(但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    95321

    GitHub 60000+ Star 登顶,命令行的艺术!

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something (但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    76920

    GitHub 60000+ Star 登顶,命令行的艺术!

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something (但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    81610

    G站 50000+ Star 登顶,这份命令行艺术请查收!

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something (但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。 ? 十、更多资源 ?

    85410

    命令行的艺术

    在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something(但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    1K50

    命令行的艺术 (GitHub 星标 6 万多)

    在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something(但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file"...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    72821

    命令行的艺术 (GitHub 星标 6 万多)

    在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...在所有路径下通过文件名查找文件,使用 locate something(但注意到 updatedb 可能没有对最近新建的文件建立索引,所以你可能无法定位到这些未被索引的文件)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file"...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    1.7K62

    用 Linux 的 watch 命令观察命令和任务

    其中一些进程有进度指示,但有时进程是通过一层抽象运行的,衡量进度的唯一方法是通过其副作用。其中一些可能是: 一个正在下载的文件不断增长。 一个从 tarball 中提取的目录被文件填满了。...你可以用这样的命令查询所有这些: $ ls -l downloaded-file $ find . | wc -l $ podman ps $ docker ps 但是反复运行这些命令,即使是利用 Bash...另一种方法是写一个小的 Bash 脚本来为你自动执行这些命令: while : do docker ps sleep 2 done 但这样的脚本写起来也会很繁琐。...使用 watch watch 命令定期运行一个命令并显示其输出。它有一些文本终端的特性,所以只有最新的输出才会出现在屏幕上。 最简单的用法是:watch 。...如果变化是预期的,但你想让一些东西看起来“不同”,watch --differences 就很好用。它可以高亮显示与上次运行的任何差异。

    83820

    用 Linux 的 watch 命令观察命令和任务

    其中一些进程有进度指示,但有时进程是通过一层抽象运行的,衡量进度的唯一方法是通过其副作用。其中一些可能是: 一个正在下载的文件不断增长。 一个从 tarball 中提取的目录被文件填满了。...你可以用这样的命令查询所有这些: $ ls -l downloaded-file$ find . | wc -l$ podman ps$ docker ps 但是反复运行这些命令,即使是利用 Bash...另一种方法是写一个小的 Bash 脚本来为你自动执行这些命令: while :do docker ps sleep 2done 但这样的脚本写起来也会很繁琐。...使用 watch watch 命令定期运行一个命令并显示其输出。它有一些文本终端的特性,所以只有最新的输出才会出现在屏幕上。 最简单的用法是:watch 。...如果变化是预期的,但你想让一些东西看起来“不同”,watch --differences 就很好用。它可以高亮显示与上次运行的任何差异。

    1.6K10

    BashShell变量

    ,但如果专门查询该元素会发现,其实不是真的把该索引对应的数组元素剔除了,而是把它置空了,因此显示该元素时打印了空值,所以显示结果相看起来是没有该元素的。...默认的 Shell 环境变量 Bash Shell 源自早期的 Unix Bourne Shell,因此继承了 Unix Bourne Shell 定义的一些默认的环境变量。...BASH_CMDS 关联数组,包含 Shell 执行过的命令的所在位置 BASH_COMMAND Shell 正在执行的命令或马上就执行的命令 BASH_ENV 若设置了该变量,每个 Bash 脚本会在运行前先尝试运行该变量定义的启动文件...,而行编辑功能被禁止 ENV 如果设置了该环境变量,在 Bash Shell 脚本运行之前会先执行已定义的启动文件(仅用于当 Bash Shell 以 POSIX 模式被调用时) EUID 当前用户的有效用户.../bin/bash main() { echo 'MAIN sees ' $# ' args' } main $* main $@ main "$*" main "$@" 然后运行该脚本文件

    2.4K30

    蓝桥ROS机器人之命令行实践

    本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell 和 Bash 脚本当中。 除去“标准的”Unix 命令,本文还包括了一些依赖于特定软件包的命令(前提是它们具有足够的价值)。...在 Bash 脚本中,使用 set -x 去调试输出(或者使用它的变体 set -v,它会记录原始输入,包括多余的参数和注释)。...但是永远不要在不信任的文件上运行。 了解如何运用 gdb 连接到一个运行着的进程并获取它的堆栈轨迹。 学会使用 /proc。它在调试正在出现的问题的时候有时会效果惊人。...如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep "filename-of-my-big-file" 单行脚本...然而 MSYS 提供的功能没有 Cygwin 完善。MinGW 在创建 Unix 工具的 Windows 原生移植方面非常有用。

    85620
    领券