给定文件 socat.conf
AUTOSTART=default
SOCAT_default="TCP4-LISTEN:3724,nodelay,fork,reuseaddr,su=nobody TCP4:your.wow.server.ip.address:3724,nodelay"
读取此文件的bash脚本的相关部分:
[ ! -f /etc/default/socat.conf ] || . /etc/default/socat.conf
start () {
echo "Starting $DESC:"
maxfds
umask 027
cd /tmp
if test "x$AUTOSTART" = "xnone" -o -z "x$AUTOSTART" ; then
echo "Autostart disabled."
exit 0
fi
for NAME in $AUTOSTART ; do
ARGS=`eval echo \\\$SOCAT_$NAME`
echo $ARGS
start_socat
echo " $NAME $ARGS"
done
return $?
}
有关完整文件,请参阅此处:https://blog.bentrax.de/2009/08/26/socat-start-automatisieren-und-iptables-regeln-laden/
我的问题是,如何向socat.conf添加另一个命令?我试过
AUTOSTART=default,another
SOCAT_default="TCP4-LISTEN:3724,nodelay,fork,reuseaddr,su=nobody TCP4:your.wow.server.ip.address:3724,nodelay"
SOCAT_another="..."
然而这不起作用。我不太熟悉bash脚本来理解$ AUTOSTART循环中的NAME。我认为答案就在那里。有什么想法吗?
答案 0 :(得分:1)
for NAME in $AUTOSTART
的工作原理是将$AUTOSTART
拆分为使用环境变量$IFS
作为分隔符的单词(默认为空格,制表符和换行符)。然后将每个单词依次存储在$NAME
中并在循环内处理,直到没有单词保留。
问题的解决方案是使用空格(或制表符或换行符)来分隔您的单词:
AUTOSTART="default another"
双引号是必要的,否则它将被视为两个单独的命令AUTOSTART=default
和another
(再次因为使用IFS进行分词)。