Linux shell脚本中的反斜杠运算符不正常工作

qfe3c7zg  于 2023-10-16  发布在  Linux
关注(0)|答案(2)|浏览(174)

我有一个简单的shell脚本,应该打开一个新的终端窗口与多个(三个)标签。

open_gnome_terminal () {
  gnome-terminal \
        --window -- bash -ic "echo tab1; exec bash;" \  
        --tab  -- bash -ic "echo tab2; exec bash;" \
        --tab  -- bash -ic "echo tab3; exec bash;"
}

open_gnome_terminal

但是,当我通过. ./myScript运行脚本时,我得到以下错误:

--window: command not found
--tab: command not found

我也试着在终端的一个命令中运行这个脚本,它工作得很好,所以我的问题是为什么反斜杠运算符在我的shell脚本中不能正常工作,我该如何修复?我用的是Linux Ubuntu 23.04

**编辑:**我删除了反斜杠后的空格,错误现在消失了。虽然我仍然没有达到预期的结果,一个新的终端窗口与3个标签(它只打开一个窗口与一个标签)

8gsdolmq

8gsdolmq1#

您的代码是:

open_gnome_terminal () {
  gnome-terminal \
        --window -- bash -ic "echo tab1; exec bash;" \  
        --tab  -- bash -ic "echo tab2; exec bash;" \
        --tab  -- bash -ic "echo tab3; exec bash;"
}

这将使用一个选项--window调用gnome-terminal
然后选项处理由--终止。
剩下的“行”是一个要运行的程序及其参数:

bash -ic "echo tab1; exec bash;" --tab -- bash -ic "echo tab2; exec bash;" --tab -- bash -ic "echo tab3; exec bash;"

bash-c后面的参数读取命令。下一个参数(--tab)用于设置其$0。其余的参数将被忽略(因为在第一个-c命令中没有引用它们)。
要做你想做的事情,--command选项已被弃用,但似乎仍然在我的机器上工作:

open_gnome_terminal() {
    gnome-terminal \
        --window --command 'bash -ic "echo tab1; exec bash"' \
        --tab    --command 'bash -ic "echo tab2; exec bash"' \
        --tab    --command 'bash -ic "echo tab3; exec bash"'
}

我的手册页警告说,这不是一个实际的shell命令行。我可能会将更复杂的代码放入shell脚本中并调用它(--command /path/to/my/script)。

yx2lnoni

yx2lnoni2#

在反斜线后面有几个额外的空格。
尝试在vi中复制粘贴脚本,然后在插入模式下将光标放在--window之前,删除空格,直到破折号刚好在前一行的\之后。点击回车键以确保所有内容都格式正确。对其他行重复上述操作

相关问题