私の人生の間、ワシントンのホスト名をWOL(Wakeup On Lan)同等のコマンドにエイリアス名を設定するために、aliasコマンドを実行するbashスクリプトを取得できません。私は、どこかで私が行方不明になっていることを引用する問題がなければならないと考えている。ここでevalコマンドを使用してコマンドエイリアスを作成する
#!/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「$コマンドによって生成される出力"である:
別名ジャスティン-PC = 'は/ usr/sbinに/ WOL -i 192.168.1.255 00:1F:D0:26:72:53'
別名ジャスティン-HTPC = 'は/ usr/sbinに/ WOL -i 1 92.168.1.255 00:16:17:DD:12:7B」
エイリアスjustinlaptop = 'は/ usr/sbinに/ WOL -i 192.168.1.255 00:1C:25:BC:C3:85'
source script.sh
ありがとうございます!私はbashスクリプトの範囲を認識していませんでした。私はもっと読むことがあります。 S.このスクリプトを使用している人は、exitのコンテキストがbashスクリプトではなく現在のセッションであるため、exit 0を削除してください – Turcogj