gpt4 book ai didi

linux - 使用 shell 脚本打开具有多个选项卡的终端

转载 作者:可可西里 更新时间:2023-11-01 11:49:33 26 4
gpt4 key购买 nike

我是 linux shell 脚本的新手。我想编写一个 shell 脚本,它将打开带有多个选项卡的终端。在每个选项卡中,它应该运行一个 rtsp 客户端应用程序。

我写了这段代码,

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
do
#
foo="$foo $tab $cmd"
done
gnome-terminal $foo
exit 0

它执行得很好,但它会打开终端并立即关闭。(我没有收到错误)如果我用 gnome-terminal --tab -e $cmd 替换行 foo=... 然后它工作正常但打开独立终端。

建议我如何解决这个问题。

谢谢

最佳答案

您应该始终(始终!)使用数组在 bash 中构建参数列表。

即:

#!/bin/bash
# ^^ this has to be bash, not /bin/sh, for arrays to work
cmd=( gnome-terminal )
for ((i=0; i<5; i++)); do
cmd+=( --tab-with-profile=Default -e "java RunRTSPClient" )
done
"${cmd[@]}"

这将为您提供与运行完全相同的效果:

gnome-terminal \
--tab-with-profile=Default -e "java RunRTSPClient" \
--tab-with-profile=Default -e "java RunRTSPClient" \
--tab-with-profile=Default -e "java RunRTSPClient" \
--tab-with-profile=Default -e "java RunRTSPClient" \
--tab-with-profile=Default -e "java RunRTSPClient"

...这就是我所了解的您想要的。

尝试在字符串中构建复杂命令会导致非常糟糕的事情发生;阅读 http://mywiki.wooledge.org/BashFAQ/050了解原因。

关于linux - 使用 shell 脚本打开具有多个选项卡的终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com