Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有节点的情况下在命令行上执行javascript_Javascript_Shell_Scripting - Fatal编程技术网

如何在没有节点的情况下在命令行上执行javascript

如何在没有节点的情况下在命令行上执行javascript,javascript,shell,scripting,Javascript,Shell,Scripting,我对脚本编写还不熟悉,我想知道是否可以在用Javascript编写的命令行上运行脚本,只需键入“/script name arg1 arg2”。我想使用Javascript,因为arg2是一个JSON文件,但如果需要的话,我愿意更改为另一种语言,以便以那种方式调用脚本。有什么想法吗 编辑:我已经看了这个问题,但是没有一个解决方案像我希望的那样运行带有“/script name”的脚本 Node.js尊重古老的unix传统shbang系列。因此,要使node.js脚本像常规可执行程序一样运行,只需

我对脚本编写还不熟悉,我想知道是否可以在用Javascript编写的命令行上运行脚本,只需键入“/script name arg1 arg2”。我想使用Javascript,因为arg2是一个JSON文件,但如果需要的话,我愿意更改为另一种语言,以便以那种方式调用脚本。有什么想法吗


编辑:我已经看了这个问题,但是没有一个解决方案像我希望的那样运行带有“/script name”的脚本

Node.js尊重古老的unix传统shbang系列。因此,要使node.js脚本像常规可执行程序一样运行,只需添加以下内容作为第一行:

#! /usr/bin/env node
从技术上讲,它不运行node,而是运行
env
comand(可在所有unixen上使用),然后查找node.js的安装位置并运行它。这使得您的脚本可以跨多个发行版(ubuntu、redhat等)移植,也可以跨不同的Unix(Linux、MacOS、BSD等)移植

然后,您只需要使脚本可执行:

chmod +x your-script.js
然而,在Windows上,它变得有点复杂。但是,npm具有内置功能,可以将脚本转换为正确的命令,因此您甚至不需要执行以下操作:

./your-script.js
您只需执行以下操作:

your-script
您需要做的只是:

  • 将shbang行添加到脚本中
  • 如果在unix上执行
    chmod+x
    操作
  • 将脚本放入自己的文件夹中,然后在该文件夹中运行
    npm init
    (这将创建一个package.json文件),将脚本转换为npm项目(如果尚未成为npm项目)
  • 编辑package.json文件并添加
    bin
    属性

    "bin" : {
        "your-script" : "./your-script.js"
    }
    
  • 在目录中运行
    npm链接


  • js尊重古老的unix传统shbang系列。因此,要使node.js脚本像常规可执行程序一样运行,只需添加以下内容作为第一行:

    #! /usr/bin/env node
    
    从技术上讲,它不运行node,而是运行
    env
    comand(可在所有unixen上使用),然后查找node.js的安装位置并运行它。这使得您的脚本可以跨多个发行版(ubuntu、redhat等)移植,也可以跨不同的Unix(Linux、MacOS、BSD等)移植

    然后,您只需要使脚本可执行:

    chmod +x your-script.js
    
    然而,在Windows上,它变得有点复杂。但是,npm具有内置功能,可以将脚本转换为正确的命令,因此您甚至不需要执行以下操作:

    ./your-script.js
    
    您只需执行以下操作:

    your-script
    
    您需要做的只是:

  • 将shbang行添加到脚本中
  • 如果在unix上执行
    chmod+x
    操作
  • 将脚本放入自己的文件夹中,然后在该文件夹中运行
    npm init
    (这将创建一个package.json文件),将脚本转换为npm项目(如果尚未成为npm项目)
  • 编辑package.json文件并添加
    bin
    属性

    "bin" : {
        "your-script" : "./your-script.js"
    }
    
  • 在目录中运行
    npm链接


  • 您的意思是“根本不使用节点”还是只编写命令
    node
    ?arg2没有理由不能是JSON文件而不使用节点。如果您要编写“/script name”,请使用节点。安装node有什么问题?还有,什么操作系统?我假设,既然您问这个问题,您使用的是Windows?可能是“根本不使用节点”的重复,还是只编写命令
    node
    ?没有理由arg2不能是JSON文件而不使用节点。如果您想编写“/script name”请使用节点。安装node有什么问题?还有,什么操作系统?我假设,既然你这么问,你使用Windows?不使用chmod怎么样?@AndreyIzman你只有两个选择,使用chmod使脚本可执行,或者使用脚本的
    节点运行它。这适用于所有语言(bash、python、ruby等)。即使是未标记为可执行文件的已编译二进制文件(可能是从电子邮件或Whatsapp下载的)也需要
    chmod
    才能工作。编译器会自动为您进行chmod,但如果您通过非标准方式(电子邮件、Whatsapp等)将程序传输到编写此命令的位置,则有时可能会丢失可执行标志/usr/bin/env节点
    因为我的根目录env文件中的节点在上述位置不存在path@VishwajeetGade
    env
    是一个在包括Linux在内的大多数unix操作系统上可用的命令。要测试操作系统是否具有
    env
    命令类型
    /usr/bin/env
    ,请在命令行上按enter键。在任何位置(包括节点文件夹外)执行此操作。我认为您尤其应该在节点文件夹之外进行此操作,以确保正确安装了
    env
    程序。几乎所有现代Unix操作系统都应该有一个正确配置的
    env
    命令,就像它们都应该有一个正确配置的
    ls
    命令一样。@VishwajeetGade The
    #行称为shbang行,应该是shell脚本中的第一行。它是sh兼容脚本语言(包括bash、tcsh和ksh)的一部分。js还支持shbang行,允许unix shell像执行可执行文件一样执行节点脚本。因此,
    #/usr/bin/env node
    应该是javascript文件的第一行(只有主文件-不是模块),而不是任何其他文件的一部分,因此不是.env文件的一部分(如果使用dotenv),不是json文件的一部分,不是配置文件的一部分,也不是其他js文件的一部分如果没有chmod呢?@AndreyIzman您只有两个选择,使用chmod使脚本可执行,或使用脚本的
    节点运行脚本。这适用于所有语言(bash、python、ruby等)。即使是未标记为可执行文件的已编译二进制文件(可能是从电子邮件或Whatsapp下载的)也需要
    chmod
    才能工作。编译器会自动为您进行chmod,但如果您通过非标准方式(电子邮件、Whatsapp等)将程序传输到何处,有时可能会丢失可执行标志