【发布时间】:2015-07-25 05:11:05
【问题描述】:
我的 googlefu 让我失望了。我有一堆变量,我从 CSV 中读取它,我想在其中去除空格。我可以
variable1="$(echo -e "${variable1}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
variable2="$(echo -e "${variable2}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
variable3="$(echo -e "${variable3}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
但是我会为每个变量更改复制并编辑它。在我看来,从其他语言来看,应该有一种方法可以执行一个简单的 for 循环,该循环适用于命名的变量并去除空格,但我不知道该怎么做。
for $i in variable1 variable2 variable3
do
$i=$(echo -e "${$i}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
done
但据我所知,这不起作用。我想要做的是遍历所有变量,去掉空格,但不必在脚本中手动输入每个变量名。
【问题讨论】:
-
请注意,在 shell 代码中,变量名称仅在您引用变量时使用
$-前缀,而不是在您定义_/_分配给时它;因此,它应该是for i in ...和i=$(...)。
标签: bash variables indirection