bash 脚本中的命令行参数无法识别

bash 脚本中的命令行参数无法识别

我使用 Debian (Raspbian) Wheezy。如果此命令行工作正常:

smsd -c sms/out -i 60 -0 -f sms/smsd.log

这个别名也可以正常工作:

bsmsd='smsd -c sms/out -i 60 -0 -f sms/smsd.log'

那么为什么可执行 bash 脚本中的这个相同的命令行会启动命令smsd,但看不到我指定的任何参数?这是脚本:

#!/bin/bash

smsd -c sms/out -f /home/pi/sms/smsd.log -i 60 -0 -v

我尝试过重定向和管道,但无济于事。

我从命令行调用脚本(称为 ssmsd),如下所示:

./ssmsd

之后,这是以下的输出ps -fC smsd

UID        PID  PPID  C STIME TTY          TIME CMD

编辑:我知道它无法识别参数,因为它告诉我没有指定假脱机目录。但是我做过: -c sms/out。当从脚本调用时,它会给出版本号和作者,然后退出。

也许我应该补充一点:它称自己为一个守护进程,但它不是一个表现良好守护进程。你不能smsd start|stop|restart这样做,而且它不会在后台运行。因此,如果我从命令行(或使用该别名)调用它,然后启动另一个终端并执行ps -fC smsd,我会得到:

UID        PID  PPID  C STIME TTY          TIME CMD
pi        2860  2621  0 17:49 pts/0    00:00:00 smsd -c xxxxxxx -i 60 -0 -f sms/smsd.log

答案1

这看起来相当明显,您没有使用相同的参数。

如果这是gnokii-smsd并且您指定-v,就像您在脚本版本中指定一样,它应该打印版本并退出,就像您告诉它的那样。

你为什么没有尝试过精确的shell 模式下的参数与脚本模式下的参数相同吗?

相关内容