bash脚本for循环怎么处理空格问题?

Feng_Yu 发布于 2015/04/17 10:56
阅读 2K+
收藏 1

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

如题。一般来说,如果参数有空格,都是加引号来规避空格被当做参数分隔符。但是在for循环中这个怎么不起作用?

var="'a b' 'c d'"
echo $var
'a b' 'c d'

for v in $var
do
    echo "$v"
done
'a
b'
'c
d'



我如何才能让for循环正确处理这几个引号,最终成为'a b', 'c d'两个参数?
加载中
1
w
weiwang1984
declare -a arr=("a b","c d")
for v in "${arr[@]}"
do
  echo "$v"
done
Feng_Yu
Feng_Yu
但是如果从字符串转换成数组怎么办?比如我的脚本是这样写read -p "请输入文件路径,多个文件请用空格分割: " str. 这样得到的str是一个可能包含"a b"这样的参数,这种情况怎么办呢?我试了下没办法通过这种方式转换成一个数组
Feng_Yu
Feng_Yu
刚在stackoverflow提问过了,老外的解决方式也是这个。
0
__赵小刚__
__赵小刚__

用eval

var="'a b' 'c d'"

eval "for v in $var; do echo \$v; done"

输出是

a b

c d

Feng_Yu
Feng_Yu
多谢,我回去试试
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部