0
#!/bin/sh
/sbin/ifconfig tun0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}' > ./tun0_ip.txt

当我将它放入命令行时,这非常有效。但是它不适用于 sh 脚本。

我究竟做错了什么?为什么某些命令不适用于 sh 脚本?

~$ bash -x ./reset.sh
+ echo /sbin/ifconfig tun0
+ grep 'inet addr:'
+ cut -d: -f2
+ awk '{print $1}'
4

1 回答 1

0

奇怪的是,您正在使用 bash 进行测试,同时#!/bin/sh以 shebang 线的形式提供。

然而,这可能不是它不起作用的原因。当然,无论您是从命令行还是从具有完全相同环境的脚本运行某些命令,它们都不应该给您不同的结果。

也许调用脚本的用户有不同的语言环境,所以 ifconfig 的输出不再是“inet addr”而是别的东西?还是没有导出一些改变 ifconfigs 输出形式的环境变量?

你只能一步一步地找出来。查看脚本应该是 ifconfig 没有给你的问题,你所期望的。所以简单地看一下脚本的输出,没有改变。

于 2015-01-28T20:07:08.593 回答