我在 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/