shell脚本中的这些命令有什么作用?

Modified on: Sun, 10 Jun 2018 03:32:23 +0800

我刚开始学习bash。我有以下脚本,我想知道以下命令的作用,以便开始了解这个世界。

if [ ! -w "." ]
then
echo "You need write permission in the directory"
exit 1
fi

firefoxGeditOpen=ps -d | grep -ic -e firefox -e gedit
if [[firefoxGeditOpen>0]]
then
echo "Firefox and Gedit must be closed to let the script work"
exit 1
fi

while(true)
do
firefox &
firefoxPid=$!
gedit &
geditPid=$!
echo "Firefox PID $firefoxPid Gedit PID $geditPid">>result.txt
wait
echo "You have closed all the processes. They will be re-opened">>result.txt
done

提前致谢!

最佳答案

正如我在的评论中所提到的,这里缺少一些重要的部分,这些命令在一起没有意义,但我会过去。

  1. if [ ! -w "." ].表示当前目录。 -w测试它是否可写。 !否定测试(因此如果目录不是可写,则该语句返回true)。

  2. ps -d | grep -ic -e firefox -e geditps -d打印所有进程减去会话启动程序。 grepps搜索管道输出中的模式(我们将在一分钟内完成)。 -i使搜索不区分大小写。 -c输出匹配的 count 而不是实际匹配。 -e获取搜索表达式。在这种情况下,firefoxgedit。因此,如果FF和gedit都没有运行,则命令将输出0.如果其中一个正在运行,则输出1.如果两者都在运行,则输出2.

  3. firefox &:启动firefox。 &强制进程进入后台。

  4. firefoxPid=$!:在bash shell脚本中$!保存最后一个后台命令的作业号。 firefoxPid是一个变量。所以这里发生的是最后一个后台命令(恰好是firefox的)的作业号存储到名为firefoxPid的变量中。

  5. 醇>
作者:Community,Seth

相关问答

添加新评论