我花了很长时间试图弄清楚这一点,所以我希望有人能对此有所启发。
#!/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"
我一直在努力使它工作大约一个小时,但我似乎无法超越这一部分。
我们非常感谢您的帮助。
答案 0 :(得分:1)
用反斜杠转义双引号:
FILESYSTEMS+=("fs$count=\"${fs}")
但是我担心您最终不需要在输出中使用双引号,但是我对jo
并不熟悉。