shell 脚本 - 不要添加引号

Dus*_*tin 1 bash shell-script

我创建了一个 npm 脚本来运行一个 jest 测试文件。要运行该文件,我会输入:

> npm start test:1 **/unit-test-filename.test.js
Run Code Online (Sandbox Code Playgroud)

我想让它变得更容易并输入如下内容:

> jt unit-test-filename
Run Code Online (Sandbox Code Playgroud)

所以我尝试创建一个看起来像这样的 bash 脚本:

#!/bin/bash -x
npm run test:1 **/$1.test.js
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试运行它时,它在最后一个参数周围加上了一个单引号,这样 npm 脚本就无法找到该文件。我得到这样的输出:

??± jt unit-test-filename                                                                                
+ npm run test:1 '**/unit-test-filename.test.js'

> cms2@0.1.2 test:1 /Users/path/to/my/current/dir
> cross-env NODE_ENV=dev node ./etc/jest1 "**/unit-test-filename.test.js"

Error!! Test file: **/unit-test-filename.test.js doesn't exist.
Run Code Online (Sandbox Code Playgroud)

我试过逃避星号并尝试了许多其他事情。这甚至可以用 bash 脚本编写吗?

fro*_*utz 5

您可能没有globstar在 shell 脚本中设置。

您可以使用shopt -s globstar.

#!/bin/bash
set -x
shopt -s globstar
npm run test:1 **/"$1".test.js
Run Code Online (Sandbox Code Playgroud)