-1

最初の配列の値が 2 番目の配列のキーである 2 つの配列を含む 2 つの bash スクリプトがあります。別のスクリプトでは、最初の配列の各値と 2 番目の配列のそのキーの値を使用して、外部スクリプトを呼び出す必要があります。

最初の (構成) スクリプト:

#! /bin/bash

PROC[0]="sshd"
PROC_PID[sshd]="/var/run/sshd.pid"

PROC[1]="openvpn"
PROC_PID[openvpn]="/var/run/openvpn.server.pid"

2 番目のスクリプト:

#! /bin/bash
. ./config

for proc in ${PROC[@]}
do
    echo "$proc";
    echo "$PROC_PID[$proc]";
    /call/to/external/script $proc $PROC_PID[$proc]
done

2 番目のスクリプトを呼び出すと、次の出力が得られます。

sshd
/var/run/openvpn.pid[sshd]
....
openvpn
/var/run/openvpn.pid[openvpn]
....

PROC配列のキーに関連付けられたPROC_PID配列の値にアクセスする方法がわかりません。私は何を間違っていますか?

4

2 に答える 2

1

それが連想配列からデータを取得する方法です:

echo "${PROC_PID[$proc]}"
/call/to/external/script $proc "${PROC_PID[$proc]}"

そして、これが正しい引用符を使用したスクリプトです。

for proc in "${PROC[@]}"
do
    echo "$proc"
    echo "${PROC_PID[$proc]}"
    /call/to/external/script "$proc" "${PROC_PID[$proc]}"
done

また、あなたはすることができます

PROC[0]='sshd'
PROC_PID[${PROC[0]}]='/var/run/sshd.pid'

そして、これも有効です:

PROC[0]='sshd'
PROC_PID[PROC[0]]='/var/run/sshd.pid'
于 2013-09-11T20:32:33.823 に答える