Я не могу заставить скрипт bash выполнить команду псевдонима, чтобы установить имя хоста рабочей станции в качестве псевдонима для эквивалентной команды WOL (Wakeup On Lan). Я полагаю, что должна быть проблема с цитированием где-то, что я пропускаю.
#!/bin/bash
WOLHosts=`nvram get wol_hosts`
WOLList=($(echo "$WOLHosts" | grep -o '[A-F0-9]\{2\}:[A-F0-9]\{2\}:[A-F0-9]\{2\}:[A-F0-9]\{2\}:[A-F0-9]\{2\}:[A-F0-9]\{2\}=[^=]*=[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*' ))
if [ "${#WOLList[@]}" -gt 0 ]
then
for Match in ${WOLList[@]}
do
Command=`echo "$Match" | sed -r "s/([A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2})=([^=]*)=([0-9]*[.][0-9]*[.][0-9]*[.][0-9]*)/alias \2='\/usr\/sbin\/wol -i \3 \1'/"`
Name=`echo "$Match" | sed -r "s/([A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2})=([^=]*)=([0-9]*[.][0-9]*[.][0-9]*[.][0-9]*)/\2/"`
Com=`echo "$Match" | sed -r "s/([A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2})=([^=]*)=([0-9]*[.][0-9]*[.][0-9]*[.][0-9]*)/\/usr\/sbin\/wol -i \3 \1/"`
alias $Name="$Com"
eval $Command
echo "$Command"
done
fi
exit 0
Вот некоторые примеры данных и вывода, которые я сейчас получаю с помощью скрипта:
Ввод (в WOLHosts):
00:1F:D0:26:72:53=Justin-PC=192.168.1.255 00:16:17:DD:12:7B=Justin-HTPC=192.168.1.255 00:1C:25:BC:C3:85=justinlaptop=192.168.1.255
Вывод, выводимый vi WOecho "$ Command":
псевдоним Justin-PC = '/ usr / sbin / wol -i 192.168.1.255 00: 1F: D0: 26: 72: 53'
псевдоним Justin-HTPC = '/ usr / sbin / wol -i 192.168.1.255 00: 16: 17: DD: 12: 7B'
alias justinlaptop = '/ usr / sbin / wol -i 192.168.1.255 00: 1C: 25: BC: C3: 85'