小编典典

Bash:语法错误:重定向意外

all

我在脚本中执行此操作:

read direc <<< $(basename `pwd`)

我得到:

Syntax error: redirection unexpected

在 ubuntu 机器中

/bin/bash --version
GNU bash, version 4.0.33(1)-release (x86_64-pc-linux-gnu)

虽然我在另一台 suse 机器上没有收到此错误:

/bin/bash --version
GNU bash, version 3.2.39(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

为什么会出错?


阅读 180

收藏
2022-07-28

共1个答案

小编典典

您的脚本是否引用/bin/bash/bin/sh在其哈希爆炸行中?Ubuntu 中的默认系统 shell
dash,而不是bash,所以如果你有,#!/bin/sh那么你的脚本将使用与你预期不同的
shell。Dash 没有<<<重定向运算符。

确保 shebang 线是:

#!/bin/bash

或者

#!/usr/bin/env bash

并使用以下命令运行脚本:

$ ./script.sh

不要以显式 方式 运行它,sh因为这将忽略 shebang:

$ ~~sh ./script.sh~~   # Don't do this!
2022-07-28