0

我正在尝试which在 ksh shell 脚本中使用以下命令查找守护程序的路径

但是,如果守护程序不存在,它会以格式给出警告..

no DaemonName .....bla bla bla

但由于我不能直接显示,我目前这样做

tmp=`which daemonName`
tmp2=`which daemonName | grep "no DaemonName"`
if [[ "$tmp2" != "" ]]
tmp=wrong name

我怎样才能在一个简单的单行中做同样的事情?

我真正想要的是,如果守护程序不存在,它应该给出一个默认字符串,而如果存在它应该给出which命令输出。

4

3 回答 3

1

这将像你想要的那样设置 tmp 变量:

tmp=$(which daemonName) || tmp="wrong name"

编辑:这个建议的一个问题是which命令行为没有标准化,正如 AIX 奇数实现所展示的那样。

当您使用ksh时,一个简单的解决方法是用内置命令替换which命令:whence

tmp=$(whence -f daemonName) || tmp="wrong name"
于 2012-04-13T11:48:27.693 回答
0

which不会在我的发行版中报告该错误,但这可能对您有用:

tmp=`which daemonName 2> /dev/null`
...

基本上,您只是丢弃发生的任何错误消息。

于 2012-04-13T11:47:41.890 回答
0

做这个:

tmp=$(which dawmonName 2>/dev/null)
: ${tmp:=wrong name}
echo "$tmp"

如果变量为空或未设置,则该:=部分分配文本。:命令除了允许参数扩展或其参数之外什么都不做。

于 2012-04-13T13:31:57.627 回答