Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何通过解析在ksh命令中执行if-else操作_Shell_Ksh_Daemon - Fatal编程技术网

Shell 如何通过解析在ksh命令中执行if-else操作

Shell 如何通过解析在ksh命令中执行if-else操作,shell,ksh,daemon,Shell,Ksh,Daemon,我正试图通过以下ksh shell脚本中的命令找到守护进程的路径 但如果守护进程不存在,它将以以下格式发出警告 没有DaemonName…..bla bla bla 但由于我不能直接显示,我现在这样做 tmp=`which daemonName` tmp2=`which daemonName | grep "no DaemonName"` if [[ "$tmp2" != "" ]] tmp=wrong name 我如何在简单的一行中

我正试图通过以下ksh shell脚本中的
命令找到守护进程的路径

但如果守护进程不存在,它将以以下格式发出警告

没有DaemonName…..bla bla bla

但由于我不能直接显示,我现在这样做

tmp=`which daemonName`
tmp2=`which daemonName | grep "no DaemonName"`
if [[ "$tmp2" != "" ]]
tmp=wrong name
我如何在简单的一行中实现同样的功能


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

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

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

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

这将按照您的需要设置tmp变量:

tmp=$(which daemonName) || tmp="wrong name"
编辑:这个建议的一个问题是
,正如aixodd实现所展示的那样,
命令行为没有标准化

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

tmp=$(whence -f daemonName) || tmp="wrong name"
这样做:

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

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

我想告诉您哪个命令被破坏了。请告诉操作系统“ksh”和“which”您使用的版本。操作系统是AIX6.2:P这就是我所知道的全部:但这会给我一个空白的tmp变量