Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建脚本以在linux中使用变量运行多个命令_Linux_Bash_Shell - Fatal编程技术网

创建脚本以在linux中使用变量运行多个命令

创建脚本以在linux中使用变量运行多个命令,linux,bash,shell,Linux,Bash,Shell,因此,基本上,我正在尝试简化一个流程,运行一个可执行脚本来更新连接到服务器的远程设备。起初,我有一些设备需要更新,但现在已经超过40台了,需要永远手动更新。我想创建一个脚本,使用可执行文件同时更新它们,但我唯一不知道的是如何在脚本中包含一个变量,我可以在命令行上输入,因为版本号必须手动输入 现在,它看起来像这样: /updater应用程序设备\u编号版本\u编号 我一直在做的只是复制和粘贴一个长命令来简化流程,然而,有40多个设备需要更新,这有点单调乏味,并且在将来远程设备需要更新时只会变得更糟

因此,基本上,我正在尝试简化一个流程,运行一个可执行脚本来更新连接到服务器的远程设备。起初,我有一些设备需要更新,但现在已经超过40台了,需要永远手动更新。我想创建一个脚本,使用可执行文件同时更新它们,但我唯一不知道的是如何在脚本中包含一个变量,我可以在命令行上输入,因为
版本号必须手动输入

现在,它看起来像这样:

/updater应用程序设备\u编号版本\u编号

我一直在做的只是复制和粘贴一个长命令来简化流程,然而,有40多个设备需要更新,这有点单调乏味,并且在将来远程设备需要更新时只会变得更糟

/updater-app-device1 version20&/updater-app-device2 version20&/updater-app-device3 version20&
。。。。等等


由于设备编号都保持不变,基本上我只想创建一个shell脚本,允许我同时更新所有设备,但在命令行上输入一个
version\u number
变量,因为每次新版本的设备软件出现时,情况都会发生变化。

我想您可以创建一个循环,然后逐个运行整个更新脚本。它将并行运行,因为它在后台运行

listOfDevices=("device1" "device2" "device3" ....)
version=$1

for device in "${listOfDevices[@]}"
do
   ./updater-app $device $version &
done

我想您可以创建一个循环并逐个运行整个更新脚本。它将并行运行,因为它在后台运行

listOfDevices=("device1" "device2" "device3" ....)
version=$1

for device in "${listOfDevices[@]}"
do
   ./updater-app $device $version &
done

完全可以,只需编写一个脚本,将版本号作为参数,并将其作为参数传递给
更新程序应用程序
。使用GNU并行。将设备列表(每行一个)放入名为
devices.txt
的文件中,然后运行
parallel-a devices.txt./updater app{}version20
Awesome!我将尝试一下GNU parallel。首先尝试一下
parallel--dry run
,这样您就可以看到它在不实际执行任何操作的情况下会做什么。完全可能,只需编写一个脚本,将版本号作为参数,并将其作为参数传递给
updater app
。使用GNU parallel。将设备列表(每行一个)放入名为
devices.txt
的文件中,然后运行
parallel-a devices.txt./updater app{}version20
Awesome!我将尝试一下GNU parallel。首先使用
parallel--dry run
进行尝试,这样您就可以看到它在不做任何实际操作的情况下会做什么。谢谢!这似乎很有效。但是,有没有办法使输出静音?由于某种原因,&似乎不起作用。您可以像这样重定向输出/更新程序应用程序$device$version>/dev/null 2>&1&谢谢!这似乎很有效。但是,有没有办法使输出静音?由于某种原因,&似乎不起作用。您可以像这样重定向输出/更新程序应用程序$device$version>/dev/null 2>&1&