我运行了部署脚本以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
您认为可能导致此问题的原因是什么?我以前没有听说过这个错误。
答案 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。