运行$(myfunction)返回“<filename>:command not found”

时间:2018-01-29 20:29:21

标签: bash function

我刚开始用bash编程,有一件事我想不通......这是我写的脚本:

#!/bin/bash

FILE=test.txt

test_file () {
  if [ -e "$FILE" ]; then
     echo "$FILE exists"
  else
     echo "$FILE does not exist"
     return 1
  fi

  return
}

$(test_file)

当我运行脚本(命名为test)时,它会输出以下错误消息:

"./test: line 16: test.txt: command not found"

令我惊讶的是,当我退出“功能部件”并通过退出替换返回时,这样:

#!/bin/bash

FILE=test.txt

#test_file () {
  if [ -e "$FILE" ]; then
     echo "$FILE exists"
  else
     echo "$FILE does not exist"
     exit 1
  fi

  exit
#}

#$(test_file)

它没有任何投诉。即使我将带有函数调用的函数粘贴/拉入另一个脚本(其工作正常)以及其他函数,它也可以工作。

我错过了什么?

1 个答案:

答案 0 :(得分:4)

您正尝试将函数的输出作为命令运行。只需删除$(...)

#!/bin/bash

FILE=test.txt

test_file () {
  if [ -e "$FILE" ]; then
     echo "$FILE exists"
  else
     echo "$FILE does not exist"
     return 1
  fi

  return
}

test_file