将两个 bash shell 文件合并为一个后,它无法正常工作

Posted

技术标签:

【中文标题】将两个 bash shell 文件合并为一个后,它无法正常工作【英文标题】:It doesn't work correct after I combine two bash shell files into one 【发布时间】:2015-03-31 09:06:45 【问题描述】:

当我按顺序执行它们时,它可以工作。我把它们组合起来之后,出现了一个错误。

第一个文件(a.sh)。

# !/bin/bash

/etc/init.d/xl2tpd start | xargs echo
echo "c zju_***" > /var/run/xl2tpd/l2tp-control

第二个文件(b.sh)。

#!/bin/bash

sleep 3

***_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $***_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

echo "c zju_***" > /var/run/xl2tpd/l2tp-control 执行后,不会立即出现 ppp0 界面。所以我在文件 b.sh 中写了这个sleep 3

如果我将它们组合成一个(c.sh)。

#!/bin/bash

/etc/init.d/xl2tpd start
echo "c zju_***" > /var/run/xl2tpd/l2tp-control 

sleep 3

***_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $***_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

出现错误:SIOCADDRT: No such device.

当我输入ifconfig 时,没有 ppp0。所以在执行route add default ppp0时会失败,这就是原因。但我不知道为什么会这样。

有人帮助我。谢谢。

【问题讨论】:

确定 *** 将在 3 秒后启动吗? (您是否尝试过将其增加到 10 秒?) @duskwuff 显然不是。但如果我把它做得很少或删除这一行,它就行不通 【参考方案1】:

sleep 3 更改为sleep 10,它再次起作用。此错误是由网络延迟引起的。

【讨论】:

以上是关于将两个 bash shell 文件合并为一个后,它无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

bash shell 合并多个文件内容到一个文件

如何使用 Bash 将一个目录合并到另一个目录?

shell学习

如何将多个文件进行合并?

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

linux , Shell 文件合并的命令