linux - 如何在 bash 中传递完整的参数列表,同时将多词参数放在一起?

标签 linux bash

我在 bash 变量扩展中遇到一些分词问题。我希望能够将参数列表存储在变量中并运行它,但任何带引号的多词参数都没有评估我的预期。

我会用一个例子来解释我的问题。假设我有一个函数 decho 将每个位置参数打印在它自己的行上:

#!/bin/bash -u
while [ $# -gt 0 ]; do
  echo $1
  shift
done

好的,如果我去 decho a b "c d" 我得到:

[~]$ decho a b "c d"
a
b
c d

这是我所期望和想要的。但另一方面,如果我从变量中获取参数列表,我会得到:

[~]$ args='a b "c d"'
[~]$ decho $args
a
b
"c
d"

这不是我想要的。我可以走了:

[~]$ echo decho $args | bash
a
b
c d

但这似乎有点笨拙。有没有更好的方法使 decho $args 中的 $args 的扩展按照我预期的方式进行分词?

最佳答案

您可以使用:

eval decho $args

关于linux - 如何在 bash 中传递完整的参数列表,同时将多词参数放在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/560987/

相关文章:

java - 如何以最低要求运行 Spring Boot 应用程序?

c - 在 bash 脚本中自动引用 .h 文件

bash - 作为 bash 脚本输入参数的文件列表

linux - Hydra http 连接失败

bash - zsh 中的 checkwinsize 等效项?

java - 如何多次运行一个jar文件?中央操作系统

Linux 内核 inode 时间戳

c++ - 远程 gdb 在每个事件中停止

linux - 有没有办法通过 shell 脚本上的 SFTP 下载与模式匹配的文件?

Linux stdout stderr 重定向到文件 : different from terminal output