我想在我的shell脚本中运行如下代码:
./node_modules/.bin/npm-run-all -p "ng lint myapp"我有一个for循环来生成引用的字符串:
LINT=""
for app in $APPS
do
LINT="$LINT \"ng lint ${app}\""
done我认为使用\“将能够生成我想要的字符串。但是当我运行:
./node_modules/.bin/npm-run-all -p ${LINT}我得到了:
ERROR: Task not found: ""ng", myapp""看起来这是在运行:
./node_modules/.bin/npm-run-all -p \"ng lint myapp\"什么是正确的方法来转义双引号,以便我将运行以下代码:
./node_modules/.bin/npm-run-all -p "ng lint myapp"发布于 2018-12-22 06:47:18
更新:感谢你指出另一个重复的问题和@CharlesDuffy的评论。我的问题可以这样解决:
#!/bin/bash
APPS="app1 app2"
LIBS="lib1 lib2"
PROJECTS="${APPS} ${LIBS}"
projects=()
for project in $PROJECTS
do
projects+=("ng lint ${project}")
done
./node_modules/.bin/npm-run-all -p "${projects[@]}"等待的另一种方式:
#!/bin/bash
APPS="app1 app2"
LIBS="lib1 lib2"
PROJECTS="${APPS} ${LIBS}"
FAIL=0
pids=()
for project in $PROJECTS
do
ng lint "${project}" & pids+=( "$!" )
done
for pid in "${pids[@]}"
do
wait "${pid}" || FAIL=$(( FAIL + 1 ));
done
if [ "$FAIL" != "0" ];
then
exit 1
fihttps://stackoverflow.com/questions/53862235
复制相似问题