Я сохраняю вывод команды ssh, которую я запускаю из bash, в переменную, и я пытаюсь проанализировать ее и получить последнее значение, используя IFS, но он продолжает игнорировать часть, которая приходит из приложения Qt. Вот что я сделал:
#!/bin/bash
results=$(ssh remote 'dbus-send --system --print-reply --type=method_call --dest=com.something.SomeApp /SomeApp com.something.SomeApp.status' 2>&1)
echo $results
IFS=$' ' # space is set as delimiter
read -ra ADDR <<< "$results" # results are read into an array as tokens separated by IFS
for i in "${ADDR[@]}"; do # access each element of array
printf '%s\n' "$i"
done
Вывод:
method return time=1570704023.543658 sender=:1.13063 -> destination=:1.14063 serial=5451 reply_serial=2 string "Idle"
method
return
time=1570700627.183948
sender=:1.13063
->
destination=:1.13308
serial=1183
reply_serial=2
Отсутствует: string
и "Idle"
.
Если я скопирую вывод,Я захожу в терминал, вставляю его в скрипт bash и запускаю на нем IFS следующим образом:
#!/bin/bash
manual="method return time=1570703114.770058 sender=:1.13063 -> destination=:1.13859 serial=4306 reply_serial=2 string "Idle""
IFS=$' ' # space is set as delimiter
read -ra ADDR <<< "$manual"
for i in "${ADDR[@]}"; do
printf '%s\n' "$i"
done
Есть ли скрытый символ, который мешает IFS прочитать всю строку, и как мне достичь своей цели, чтобы получитьвсю строку в массив?