BASH:数组输出部分周围有双引号吗?

时间:2018-10-02 16:50:12

标签: arrays linux bash shell

我花了很长时间试图弄清楚这一点,所以我希望有人能对此有所启发。

#!/bin/bash

HOSTNAME="`hostname`"
JSONFILE="${HOSTNAME}.json"

#####################
#     FUNCTIONS     #
#####################
function getfilesystems() {
  count=0;
  FILESYSTEMS=()
  SAVEIFS=$IFS
  IFS=$(echo -en "\n\b")
  for fs in `df -P | awk 'NR!=1'`; do
    FILESYSTEMS+=("fs$count=${fs}")
    (( count++ ))
  done
  echo "${FILESYSTEMS[@]}"
  IFS=$SAVEIFS
}

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

jo -p serverdata="$(jo hostname=${HOSTNAME} reportdata="$(date)" storage="$(jo -p "$(getfilesystems)")")"

IFS=$SAVEIFS

我正在尝试着重FILESYSTEMS+=("fs$count=${fs}")这一部分

现在,输出为:

'fs0=/dev/mapper/vg_rpidalappnfs-LogVol00                                           10190136      5486908      4178940      57% /' 'fs1=tmpfs                                                                           1962684            4      1962680       1% /dev/shm' 'fs2=/dev/sda1                                                                        194241       104145        79856      57% /boot'

这几乎是我想要的。我需要的是这个(请看引号的区别?):

fs0="/dev/mapper/vg_rpidalappnfs-LogVol00                                           10190136      5486908      4178940      57% /" fs1="tmpfs                                                                           1962684            4      1962680       1% /dev/shm" fs2="/dev/sda1                                                                        194241       104145        79856      57% /boot"

我一直在努力使它工作大约一个小时,但我似乎无法超越这一部分。

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

用反斜杠转义双引号:

FILESYSTEMS+=("fs$count=\"${fs}")

但是我担心您最终不需要在输出中使用双引号,但是我对jo并不熟悉。