语法错误:重定向意外

时间:2013-11-24 19:00:58

标签: linux bash shell debian

我运行了部署脚本以root身份设置我的服务器。然后我尝试运行另一个名为test.sh的脚本,其中包含以下行:

# Logging
exec  > >(tee -a /var/log/test_full.log)
exec 2> >(tee -a /var/log/test_error.log)

但是,当我尝试这个时,我收到以下错误:

test.sh: 19: test.sh: Syntax error: redirection unexpected

您认为可能导致此问题的原因是什么?我以前没有听说过这个错误。

2 个答案:

答案 0 :(得分:14)

假设您的脚本代码已完成,

This answer可以解决您的问题。

简而言之,您通过dash而不是bash运行脚本。解决方案就像添加必要的#!/bin/bash

一样简单

如果缺少#!,系统默认运行的系统因系统而异。在我的系统上,我没有收到您的错误,因为默认情况下会运行了解您的重定向的shell。我必须模拟dash将成为重现错误的默认shell的情况。

答案 1 :(得分:8)

假设您使用./myscript运行脚本,请确保脚本以

开头
#!/bin/bash

而不是#!/bin/sh或其他任何内容。该错误表明使用了另一个shell而不是Bash。

如果您的脚本确实这样做,请检查/bin/bash是不是符号链接,确实是/bin/bash --version的Bash。