为何shell for循环列表不能成功解析xargs中的变量呢?
配置表中有一个黑名单的标签列表 是这样保存的 如 1-3,7-9
想把它展开成 1,2,3,7,8,9
如下所示
for i in {1..3,7..9}; do for j in {$i}; do echo -n "$j,"; done; done
1,2,3,7,8,9
详细步骤如下
# 替换-为..
echo "1-3,7-9" | sed 's/-/../g'
1..3,7..9
# 确定能够正确识别@
echo "1-3,7-9" | sed 's/-/../g' | xargs -I@ echo @
1..3,7..9
# 将@变量放到for中 报错
echo "1-3,7-9" | sed 's/-/../g' | xargs -I@ for i in {@}; do for j in {$i}; do echo -n "$j,"; done; done
zsh: parse error near `do'
请问错在哪呢? 正确的写法是?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
参考了@傅易君的答案 可以使用如下的命令
还是用awk更简单
先抛开
do
的问题,你试试:
然后试试:
楼主你 xargs 没有把输入切开。
然后看:
好像 mac 不支持
xargs
的-d
参数,有点苦恼。