Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 bash脚本:在不同目录中具有不同命令的multitab终端_Linux_Bash_Shell_Ubuntu_Ubuntu 14.04 - Fatal编程技术网

Linux bash脚本:在不同目录中具有不同命令的multitab终端

Linux bash脚本:在不同目录中具有不同命令的multitab终端,linux,bash,shell,ubuntu,ubuntu-14.04,Linux,Bash,Shell,Ubuntu,Ubuntu 14.04,这个脚本应该打开3个选项卡(所有选项卡都用于不同的目录和不同的命令)。 e、 g.command1:将目录更改为/home/eric/project/p1,并执行命令ls。接下来的2个命令也是如此 但是当我执行这个bash脚本时,它会打开并立即关闭。我猜这是错误的,这就是为什么会发生这种情况,但我无法追踪 是否存在语法错误?为什么需要在结尾处退出0?请尝试以下操作:gnome terminal--tab--working directory=“/home/eric/project/p1”-e“l

这个脚本应该打开3个选项卡(所有选项卡都用于不同的目录和不同的命令)。 e、 g.command1:将目录更改为
/home/eric/project/p1
,并执行命令
ls
。接下来的2个命令也是如此

但是当我执行这个bash脚本时,它会打开并立即关闭。我猜这是错误的,这就是为什么会发生这种情况,但我无法追踪


是否存在语法错误?

为什么需要在结尾处退出0?请尝试以下操作:gnome terminal--tab--working directory=“/home/eric/project/p1”-e“ls”使其适应您的需要needs@Inian如果没有它,代码将以gnome终端返回的退出值退出。是,构造的命令存在语法问题<代码>bash-c''cd/home/。。;ls';bash不正确。在尝试编写构造gnome terminal的脚本之前,您应该先看看是否可以编写一个手动运行的
gnome terminal
命令。有关脚本调试技术,请参阅。第一件事是将
set-x
放在
gnome-terminal
命令上方的行上。这样,您将看到正在执行的操作,并可以检查gnome终端手册页以查看错误。为什么需要在结尾处退出0?请尝试以下操作:gnome终端--tab--working directory=“/home/eric/project/p1”-e“ls”将其适应您的需要needs@Inian没有它,代码将退出,退出值由
gnome terminal
返回。是的,构造的命令存在语法问题<代码>bash-c''cd/home/。。;ls';bash不正确。在尝试编写构造gnome terminal的脚本之前,您应该先看看是否可以编写一个手动运行的
gnome terminal
命令。有关脚本调试技术,请参阅。第一件事是将
set-x
放在
gnome-terminal
命令上方的行上。通过这种方式,您将看到正在执行的操作,并可以检查gnome终端手册页以查看错误。
#!/bin/bash

tab="--tab"
foo=""

cmds[1]="'cd /home/eric/project/p1;ls'"
titles[1]="title1"

cmds[2]="'cd /home/eric/project/p2;pwd'"
titles[2]="title2"

cmds[3]="'cd /home/eric/project/p3;dir"
titles[3]="title3"

for i in 1 2 3; do
    foo+=($tab --title="${titles[i]}"  -e "bash -c '${cmds[i]}';bash")
done

gnome-terminal "${foo[@]}"

exit 0