需要在 Bash 脚本中推迟 `name` 变量

问题描述 投票:0回答:1

如何推迟 Bash 脚本中的

name
变量,以便它在循环中的引号内正确扩展,例如:

name='*'
curate() {
  local e=
  for e in $(export HOME='/home/me'; echo /home/me/Downloads/\${name}.$1)
  do
    [ -e "$e" ] && echo "$e"
  done
}

curate() c

name=foo
curate() c

因为它不起作用。
请帮忙明确一下

bash global-variables variable-assignment
1个回答
0
投票

您可以将您的策划功能替换为:

curate() {
  local IFS= e=
  for e in /home/me/Downloads/$name.$1
  do
    [ -e "$e" ] && echo "$e"
  done
}

通过将

IFS
本地化为空字符串,全局扩展仍然会发生,但结果的分词被禁用。

© www.soinside.com 2019 - 2024. All rights reserved.