#!/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线程,但它们都不适用于我。
答案 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支持'+ ='赋值运算符,它附加在左侧命名的变量的值。