echo {1..$1}写法在脚本中失效问题

发布于 2022-09-12 01:04:14 字数 201 浏览 13 评论 0

[11:33:04 root@centos7 data]#cat test1.sh
#!/bin/bash
echo {1..$1}
echo {1..9}

[11:30:55 root@centos7 data]#./test1.sh 9
{1..9}
1 2 3 4 5 6 7 8 9

接收变量后为什么无法正确显示呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿咻 2022-09-19 01:04:14

参见 man bash

A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr , an optional increment, is an integer. ......

Brace expansion is performed before any other expansions, ......

这个展开发生在替换 $1 之前,此时它并不符合这一展开的形式。于是没有展开。

你这个可以用 seq 命令实现:

echo $(seq -s " " 1 $1)
心舞飞扬 2022-09-19 01:04:14

shell的解释顺序了解下先。

加点东西:
`#!/bin/bash
eval echo {1..$1}
echo {1..9}`

绝不放开 2022-09-19 01:04:14

有必要学习一下基础的shell,共勉

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文