#!/bin/bash
HOSTS="dev.com,dev-secret;qa.com,qa-secret"
HOSTNAME=""
SECRET=""
IFS=';' read -ra host <<<"$HOSTS"
for i in "${host[@]}"; do
IFS=',' read -r name secret <<<$i
HOSTNAME = ${name}
SECRET = ${secret}
done
現在我希望輸出為:
echo $HOSTNAME should output : "dev.com\,qa.com"
echo $SECRET should output : "dev-secret\,qa-secret"
如何在字串中加入或附加 for 回圈輸出?
uj5u.com熱心網友回復:
你的問題是 =. 使用引數擴展,您\,只能在填充引數時添加。
HOSTS="dev.com,dev-secret;qa.com,qa-secret"
HOSTNAME=""
SECRET=""
IFS=';' read -ra host <<<"$HOSTS"
for i in "${host[@]}"; do
IFS=',' read -r name secret <<<$i
HOSTNAME ="${HOSTNAME: \,}${name}"
SECRET ="${SECRET: \,}${secret}"
done
echo "${HOSTNAME}"
echo "${SECRET}"
uj5u.com熱心網友回復:
不回圈,但讀取陣列并執行陣列連接:
#!/usr/bin/env bash
hosts="dev.com,dev-secret;qa.com,qa-secret"
hostnames=()
secrets=()
join () {
printf %s "$1"
shift
printf %s "${@/#/\\,}"
}
{
IFS=',' read -r -d';' -a hostnames
IFS=',' read -r -a secrets
} <<<"$hosts"
printf 'Hostnames: "%s"\n' "$(join "${hostnames[@]}")"
printf 'Secrets: "%s"\n' "$(join "${secrets[@]}")"
輸出:
Hostnames: "dev.com\,dev-secret"
Secrets: "qa.com\,qa-secret"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/398241.html
