私のbash関数では、grepを使用して文字列から一致するパターンを取得し(配列を作成したファイルを選択) 。文字列がgrepキャプチャから作成されたbash配列の各要素の引用符を削除するには
files=($(echo "$output" | ggrep -oP 'create\s\K(.+)'))
を実行した後output
installing route
create app/routes/foo.js
create app/templates/foo.hbs
updating router
add route foo
installing route-test
create tests/unit/routes/foo-test.js
という変数に割り当てられている私は私がecho ${files[*]}
を実行してするつもり何をキャプチャしていたことを確認します。そう
app/routes/foo.js app/templates/foo.hbs tests/unit/routes/foo-test.js
私の目標は、NPMスクリプト(npm run lint <list of files>
)に引数としてこれらのファイルを渡すことであるとして、端末での出力が見えます。私は
"app/routes/foo.js" "app/templates/foo.hbs" "tests/unit/routes/foo-test.js"
または
"app/routes/foo.js app/templates/foo.hbs tests/unit/routes/foo-test.js"
のようなファイル名のいずれかのプリントアウト、NPMスクリプトの実行に私の変数に接続しようとすると、しかし、ここでの究極の目標は、
を実行できるようにすることですnpm run lint app/routes/foo.js app/templates/foo.hbs tests/unit/routes/foo-test.js
私はfile
変数を補間するためにたくさんの組み合わせを試しましたが、何も動作しないようです。私は概念的に何かを逃している、または間違った方法でこれに近づいているように感じます。もともと私はfile
の配列を使わずにこれを試していましたが、私は同じ問題を抱えていました。私の最初のパスは、これをbashで動かすことです。しかし、私はgrep
またはsed
をここに使用して固執したいと思います。誰でも何か提案がありますか?私はecho $parsedfiles
を実行すると、私の端子出力はapp/routes/foo.js app/templates/foo.hbs tests/unit/routes/foo-test.js
よさそうだが、npm run "app/routes/foo.js" "app/templates/foo.hbs" "tests/unit/routes/foo-test.js"
がここ 本当の問題を解決しようとして、次の行に、それはまだ出力
parsedfiles=$(echo "${files[*]}" | sed -e 's/"//g')
echo $parsedfiles
npm run lint $parsedfiles
を試してみましたが、読んで提案した後
私がargsをどのように渡しているかについてではありませんでした。実際にはnpm script
を実行している問題です。 argsをnpmスクリプトに渡すと、自動的に二重引用符で囲まれます。
をVARを使用することができ、ファイル・パスは、個々のまたは一つの大きな文字列としてNPMに渡された場合、現在発生するエラーとは何ですか? – MicFin
これらのアプローチを試しましたか? https://stackoverflow.com/questions/9590034/getting-bash-variable-into-filename-for-zip-commandまたはhttps://stackoverflow.com/questions/16703624/bash-interpret-string-variable-as-ファイル名のパス – MicFin
これはevalの良いユースケースでしょうか? https://stackoverflow.com/questions/11065077/eval-command-in-bash-and-its-typical-uses – MicFin