Shell 如何通过解析在ksh命令中执行if-else操作
我正试图通过以下ksh shell脚本中的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 我如何在简单的一行中
命令找到守护进程的路径
但如果守护进程不存在,它将以以下格式发出警告
没有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变量