У меня есть ситуация, когда у меня есть файл. sh, полный функций. Каждая из функций имеет эхо в них, выводя их на консоль.
#!/bin/bash
getLogTimestamp() {
echo TimeStamp: $(date +%Y-%m-%dT%H:%M:%S.130Z)
}
getDisplayName(){
echo Device Name: $(awk -F'=' '/^CARBON_LITE_PLAYER_ID=.*/ { print $2;}' /home/benja/app/.env)
}
getDeviceIPAddress(){
echo Device IP Address: $(hostname -i)
}
getSystemUptime(){
echo System UpTime: $(uptime)
}
getDateTimeInfo(){
echo Time Sync Status: "$(timedatectl status | awk '/Warning/{exit} 1')"
}
getMemoryInfo() {
arr=( $(free -h) )
keys=("${arr[@]::8}")
vals=("${arr[@]:8:12}")
for i in ${!keys[@]}; { printf -v data[i] "%s: %s, " "${keys[i]}" "${vals[i]}"; }
data="${data[@]}"
echo Memory: ${data%,*}
}
getDiskInfo()
{
arr=($(df -h))
keys=("${arr[@]::6}")
vals=("${arr[@]:7:100}")
for i in ${!keys[@]}; { printf -v data[i] "%s: %s, " "${keys[i]}" "${vals[i]}"; }
data="${data[@]}"
echo Disk: ${data%,*}
}
getDisplayState(){
STATE=$(/opt/vc/bin/tvservice -s | awk '/state/ {print $2}')
if STATE=0x40001
then
echo Display State: VC_SDTV_NTSC, VC_HDMI_UNPLUGGED
exit
elif STATE=0x40002
then
echo Display State: VC_SDTV_NTSC, VC_HDMI_ATTACHED
exit
elif STATE=0x120002
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED
exit
elif STATE=0x120005
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_UNPLUGGED, VC_HDMI_DVI
elif STATE=0x120016
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_DVI, VC_HDMI_HDCP_UNAUTH
exit
elif STATE=0x12001a
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_HDMI, VC_HDMI_HDCP_UNAUTH
exit
elif STATE=0x12001a
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_HDMI
exit
elif STATE=0x120009
then
echo Display State: VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_UNPLUGGED, VC_HDMI_HDMI
exit
fi
}
У меня есть второй файл. sh (в который я импортировал файл функции, и я могу вызвать функции, и они эхо на экран просто отлично.
Моя проблема в том, что я не могу записать вывод функции в файл:
. /home/benja/app/scripts/log-helper-functions.sh
# RSH -We are logging this data every time this script runs
echo ---------------------------------- >>/home/benja/app/logs/carbonlite-guardian.log
getDisplayName >>/home/benja/app/logs/carbonlite-guardian.log
getDeviceIPAddress >>/home/benja/app/logs/carbonlite-guardian.log
getLogTimestamp >>/home/benja/app/logs/carbonlite-guardian.log
getSystemUptime >>/home/benja/app/logs/carbonlite-guardian.log
getDateTimeInfo >>/home/benja/app/logs/carbonlite-guardian.log
getMemoryInfo >>/home/benja/app/logs/carbonlite-guardian.log
getDiskInfo >>/home/benja/app/logs/carbonlite-guardian.log
getDisplayStaten >>/home/benja/app/logs/carbonlite-guardian.log
echo ---------------------------------- >>/home/benja/app/logs/carbonlite-guardian.log
# RSH end
Я не хочу жестко кодировать функции для записи в файл, поскольку они предназначены для многократного использования, так как я могу go о записи в файл в этом случае?
TIA, Ron