Bash 脚本 - 如何保留传递给 bash 函数的换行符?

Bash script - How to preserve new line character passed to bash function?

我有两个文件:

touch a.txt
touch b.txt

在 bash 中,我想将它们逐一列出。

#!/bin/bash
var=$(ls -1 *.txt)
echo "$var"

因为有双引号:echo "$var" 命令每个文件都显示在单独的行中(这就是我想要的):

a.txt
b.txt

现在进入正题。如果我添加功能:

#!/bin/bash
function fun_cmd () {
     
}
var=$(ls -1 *.txt)
fun_cmd "echo $var"

echo 命令将它们显示在一行中:

a.txt b.txt

在最后一个示例(函数)中,我希望输出显示为两行,就像第一个示例一样。

  • 始终正确引用!
  • 不要使用单个参数,而是使用函数的所有参数 "$@"
#!/usr/bin/env bash
function fun_cmd () {
     "$@"
}
var="$(ls -1 -- *txt)"
fun_cmd echo "$var"