Lau*_*rez 6 command-line bash scripts
我刚刚开始学习 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
Run Code Online (Sandbox Code Playgroud)
提前致谢!
正如我在评论中提到的,这里缺少一些重要的部分,这些命令放在一起不太有意义,但我会仔细检查它们。
if [ ! -w "." ]:.代表当前目录。-w测试它是否可写。!否定测试(因此,如果目录不可写,则该语句返回 true,反之亦然)。
ps -d | grep -ic -e firefox -e gedit:ps -d打印所有进程减去会话启动程序。grep从管道输出中搜索ps模式(我们将在一分钟内得到)。-i使搜索不区分大小写。-c输出匹配的计数而不是实际的匹配。-e接受搜索表达式。在这种情况下firefox和gedit。因此,如果 FF 和 gedit 都没有运行,则该命令将输出 0。如果其中一个正在运行,则输出 1。如果两者都在运行,则输出 2。
firefox &: 启动火狐。&强制进程进入后台。
firefoxPid=$!: 在 bash shell 脚本中$!保存了最后一个后台命令的作业号。firefoxPid是一个变量。所以这里发生的是最后一个后台命令(恰好是 firefox 的)的作业号被存储到一个名为firefoxPid.