如何在 ubuntu 中使用 bash 或 shell 脚本运行不同的配置文件?

如何在 ubuntu 中使用 bash 或 shell 脚本运行不同的配置文件?

在 Windows 中我只需这样做。

@echo off
for /L %%n in (1,1,10) do start "" "C:\Program Files\Mozilla Firefox\firefox.exe" -P user%%n -no-remote imacros://run/?m=we.js ping 192.168.1.1 -n 1 -w 1500 > NUL

在 ubuntu 中有一些等效项可以运行不同的配置文件,我的 Firefox 的路径是,/opt/firefox/firefox并且需要循环来选择不同的用户。

重要。我需要同时运行所有配置文件。

另一个问题是。在 ubuntu 中 Firefox 中的配置文件路径在哪里。在 Windows 中,appdata 中很简单,但在 ubuntu 中似乎更复杂。有人可以告诉我我的配置文件路径在哪里吗?

答案1

我不太理解批处理,但猜测其含义在 bash 中应该是这样的:

for n in {1..10}
do
    /opt/firefox/firefox -P user$n -no-remote imacros://run/?m=we.js ping 192.168.1.1 -n 1 -w 1500 &> /dev/null &
done
  • {n..m}是序列形式Bash 中的括号扩展。您还可以使用 C 风格的 for 循环:

    for ((n = 1; n <= 10; n++))
    do
    ...
    done
    
  • $n是如何获取变量的值n

  • &> /dev/null将错误和正常输出重定向到/dev/null特殊设备,有效地丢弃它们
  • &本身会将命令发送到后台,因此脚本不再等待命令完成后再继续执行下一个命令。

您的 Firefox 配置文件可能位于 中~/.mozilla/firefox/


(这ping真的是 Firefox 论点的一部分吗?)

答案2

默认的 Unix shell 不会为你提供所有正在使用的功能。以下是你可以使用基本 shell 执行的操作:

痕迹

@echo off

默认情况下,shell 脚本是静默的,因此默认情况下处于“关闭”状态。打开跟踪的标志是-x( set -x)。

循环 1 至 10

for /L %%n in (1,1,10)

这可以在 Unix shell 脚本中使用变量和 来完成while。较新的 shell(例如bash)提供了编写此类脚本的方法,但如果您想编写一个可以在(几乎)所有 Unix 机器上运行的脚本,那么您需要坚持使用基本功能:

#!/bin/sh
n=1
while test $n -le 10
do
  ...
  n=`expr $n + 1`
done

...是要执行 10 次的脚本。该expr命令用于在每次迭代时将计数器增加一。请注意空格,它们很重要(而不是缩进,尽管我建议您保持适当的缩进)。

正如 @Olorin 提到的,该expr命令也可以替换为:

n=$(($n + 1))

将 Firefox 作为后台进程启动

start "" "C:\Program Files\Mozilla Firefox\firefox.exe" &
                    -P user%%n -no-remote imacros://run/?m=we.js

(我把这一行拆开了,在 DOS 脚本中,该脚本要求&在行末有一个 )。

在这里,您使用“start”启动一个程序,这意味着它在后台运行。然后您指定参数,其中一个参数使用该计数器n。假设 Firefox 在您的路径中(如果您安装了默认版本,它将在您的路径中),那么您不需要完整路径,只需以下内容:

firefox -P user$n -no-remote imacros://run/?m=we.js &

这是一个sh脚本,结尾&用于在后台启动该进程。这意味着命令启动后,shell 立即返回。

您还设置了一个特殊变量,用于提供新进程的 PID。如果您想要发送信号或只是想知道进程是否仍在运行,这可能会很有用。(即——FIREFOX_PID=$!不过,就您而言,您将启动其中 10 个……仅一个这样的变量对您不起作用。)

发送一个静默 ping,超时时间为 1.5 秒

ping 192.168.1.1 -n 1 -w 1500 > NUL

这个 ping 看起来像是一行单独的代码。 是-n 1重复一次, 是-w 1500指定超时。-w在 Linux 上, 是一一对应的。-n但是, (number) 必须替换为-c(count)。 最后,NUL特殊文件可以用 替换/dev/null

ping 192.168.1.1 -c 1 -w 1500 > /dev/null

注意:为了使 ping 安静,您还可以使用-q如下方法:

ping 192.168.1.1 -q -c 1 -w 1500

当然,如果ping是 Firefox 命令行的一部分(不太可能),那么您可能根本不应该转换它。

相关内容