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

时间:2017-01-05 09:54:37

标签: linux bash shell ubuntu ubuntu-14.04

#!/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线程,但它们都不适用于我。

1 个答案:

答案 0 :(得分:2)

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

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

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

bash multitab.sh

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

来自Bash参考手册:

  

Appendix B Major Differences From The Bourne Shell

     

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