Shell 与&&;壳牌公司的接线员?
正在给出[:参数太多错误 出什么事了Shell 与&&;壳牌公司的接线员?,shell,Shell,正在给出[:参数太多错误 出什么事了 在评论中: 有两个进程正在运行,如果执行我的自动工具,我想检查这两个进程是否正在运行。为此,我需要检查这两个进程是否正在运行,你说的是对的,grep包含在参数中,它总是成功的。我只想检查两个进程是否正在运行,忽略grep 部分。我可以做一些事情,比如检查$?==0,但如何对这两个进程都这样做 [命令所需的值列表非常有限。您的ps-ef命令的输出可能会生成大量数据,这些数据看起来不像[value1=value2]等[/code>所需的数据 你可以试试: if
在评论中:
有两个进程正在运行,如果执行我的自动工具,我想检查这两个进程是否正在运行。为此,我需要检查这两个进程是否正在运行,你说的是对的,
grep
包含在参数中,它总是成功的。我只想检查两个进程是否正在运行,忽略grep
部分。我可以做一些事情,比如检查$?==0
,但如何对这两个进程都这样做
[
命令所需的值列表非常有限。您的ps-ef
命令的输出可能会生成大量数据,这些数据看起来不像[value1=value2]
等[/code>所需的数据
你可以试试:
if [ $(ps -ef | grep date) ] && [ $(ps -ef | grep time) ]
then
echo "success"
else
exit 1
fi
如果至少有一个命令引用了date
,并且至少有一个命令引用了time
(并且由于grep
命令包含该参数,它应该总是成功的),那么这将报告成功,但这可能不是您想要的结果。如果使用单参数(由双引号强制执行),则[
命令检查参数是否为空字符串(如果不是,则成功)
你到底想做什么?最好这样做,它将比多个子shell$()
和管道|
更轻(许多fork()
在后台):
不需要测试命令:
if pidof &>/dev/null date && pidof &>/dev/null time; then
echo "success"
else
exit 1
fi
或
或
我们在这里使用布尔逻辑。pidof
可能更适合使用。您想实现什么?有两个进程正在运行,如果执行我的自动工具,我想检查这两个进程是否正在运行。为此,我需要检查这两个进程是否正在运行,如果您说grep包含在它的参数中,您是对的总是成功我只想检查两个进程是否正在运行,而不包括grep部分。我可以做一些事情,比如检查$?==0,但我如何对这两个进程都这样做呢?如果您的命令名真的是date
和time
,那么您将处于隐藏状态,因为它们是标准的Unix实用程序,您将得到错误的posi如果你的命令名真的是xyz_date
和xyz_time
或其他类似的特殊名称,你就有更好的机会了。有些程序,比如pidof
和pgrep
,会搜索进程。也许你应该使用其中的一个。
if pidof &>/dev/null date && pidof &>/dev/null time; then
echo "success"
else
exit 1
fi
[ # POSIX test
[[ # bash enhanced test
test # word test