使用Here文档作为bash函数的参数

时间:2017-11-21 10:07:30

标签: bash

我将一些命令作为此功能的参数:

function check_command 
{
  if ! "$1" 
  then
    echo "Error when executing $1 - exiting"
    end
    exit 1
  fi
}

在功能中检查命令执行。

我用fdisk命令调用此函数:

check_command "sudo fdisk $system_disk_path <<EOT
o
p
n
p
1

+100M
t
c
n
p
2

w
EOT"

但是我收到了一个错误:

EOT: No such file or directory

如何使用Here doc命令?

2 个答案:

答案 0 :(得分:0)

为了将整个命令作为单个参数。在这种情况下,正如所说的@ 123

  

在param扩展后你不能使用文件操作符,因为它们是在

之前处理的

因此,使用typeof(b) <- typeof(a) 是解决方案:

eval

答案 1 :(得分:0)

定义die函数并在任意命令之后调用比将其传递给函数要简单得多:

die () {
  echo "Error: $1 - exiting"
  exit 1
}

sudo fdisk "$system_disk_path" <<EOT || die "fdisk failed"
o
p
n
p
1

+100M
t
c
n
p
2

w
EOT