打开多个选项卡并在shell脚本中执行命令

#!/bin/bash tab="--tab" cmd="bash -c 'python';bash" foo="" for i in 1 2 3; do foo+=($tab -e "$cmd") done gnome-terminal "${foo[@]}" exit 0 

我正在使用这个scirpt使用shell脚本打开多个选项卡。

将其称为multitab.sh并以这种方式执行user@user:~$ sh multitab.sh

目前这个脚本应该打开3个标签,他们都将执行python命令。 但是当我执行它,抛出错误

 multitab.sh: 8: multitab.sh: Syntax error: word unexpected (expecting ")") 

这个错误的原因是什么? 我怎样才能让这个脚本执行3个不同的命令?

我已经经历了。 低于SOF线程,但没有一个为我工作。

  • https://askubuntu.com/questions/315408/open-terminal-with-multiple-tabs-and-execute-application
  • https://askubuntu.com/questions/500357/opening-multiple-terminal-tabs-and-running-command
  • https://askubuntu.com/questions/521084/bash-script-for-multiple-tabs-program-running

这是因为您正在使用sh运行脚本,添加元素的+=语法不可用:

 foo+=($tab -e "$cmd") # ^^ 

所以你所要做的就是用Bash运行脚本:

 bash multitab.sh 

或者只是使用./multitab.sh (在执行模式给文件之后),因为脚本( #!/bin/bash )中的shebang已经提到了Bash。

从Bash参考手册:

附录B与Bourne Shell的主要区别

– Bash支持'+ ='赋值运算符,该赋值运算符附加在左侧命名的变量的值上。