按 space 拆分字符串并循环结果以按破折号拆分
Split string by space and loop result to split by dash
命令nx affected:build --plain
给我单行输出
domain.com-backend domain.com-frontend
我需要将这个结果写入文件...
nx affected:build --plain > $FILE
...但我还需要将内容拆分为元素(由 space 拆分)并将每个元素拆分为 domain
和 app
(由破折号拆分)以生成多个docker 生成命令。
我想我的尝试语法有误。
while IFS=' ' read -r element; do
while IFS='-' read -r domain app; do
echo docker build -t "$domain-$app" -f "apps/$domain/$app/Dockerfile" . # echo will be removed later
done
done < $FILE
所以代码应该为示例输出两个命令:
docker build -t domain.com-backend -f apps/domain.com/backend/Dockerfile .
docker build -t domain.com-frontend -f apps/domain.com/frontend/Dockerfile .
简而言之:结果字符串应存储在文件中,并应调用多个生成的命令。
要启动的示例版本,还有一个 tmp 回显:
#!/bin/bash
outfile=./xyz.txt
info=($(nx affected:build --plain | tee $outfile))
for item in "${info[@]}"; do
fb=${item##*-}
echo docker build -t "$item" -f apps/domain.com/$fb/Dockerfile .
done
已更新:
#!/bin/bash
outfile=./xyz.txt
info=($(nx affected:build --plain | tee $outfile))
for item in "${info[@]}"; do
dom=${item%-*}
fb=${item##*-}
echo docker build -t "$item" -f apps/$dom/$fb/Dockerfile .
done
我有一个类似的解决方案:
# instead of echo you can place your command (nx affected:build --plain)
data=`echo "domain.com-backend domain.com-frontend"`
IFS=' '
for part in $data
do
while IFS='-' read -r domain app; do
echo "docker build -t $domain-$app -f apps/$domain/$app/Dockerfile ."
done <<< $part
done
命令nx affected:build --plain
给我单行输出
domain.com-backend domain.com-frontend
我需要将这个结果写入文件...
nx affected:build --plain > $FILE
...但我还需要将内容拆分为元素(由 space 拆分)并将每个元素拆分为 domain
和 app
(由破折号拆分)以生成多个docker 生成命令。
我想我的尝试语法有误。
while IFS=' ' read -r element; do
while IFS='-' read -r domain app; do
echo docker build -t "$domain-$app" -f "apps/$domain/$app/Dockerfile" . # echo will be removed later
done
done < $FILE
所以代码应该为示例输出两个命令:
docker build -t domain.com-backend -f apps/domain.com/backend/Dockerfile .
docker build -t domain.com-frontend -f apps/domain.com/frontend/Dockerfile .
简而言之:结果字符串应存储在文件中,并应调用多个生成的命令。
要启动的示例版本,还有一个 tmp 回显:
#!/bin/bash
outfile=./xyz.txt
info=($(nx affected:build --plain | tee $outfile))
for item in "${info[@]}"; do
fb=${item##*-}
echo docker build -t "$item" -f apps/domain.com/$fb/Dockerfile .
done
已更新:
#!/bin/bash
outfile=./xyz.txt
info=($(nx affected:build --plain | tee $outfile))
for item in "${info[@]}"; do
dom=${item%-*}
fb=${item##*-}
echo docker build -t "$item" -f apps/$dom/$fb/Dockerfile .
done
我有一个类似的解决方案:
# instead of echo you can place your command (nx affected:build --plain)
data=`echo "domain.com-backend domain.com-frontend"`
IFS=' '
for part in $data
do
while IFS='-' read -r domain app; do
echo "docker build -t $domain-$app -f apps/$domain/$app/Dockerfile ."
done <<< $part
done