寻找一个显示bash数组中@和*之间差异的示例

时间:2016-10-29 12:19:07

标签: arrays bash

<% provide(:title, "Edit Project") %> <h1>Update your Project</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= form_for(@project) do |f| %> <%= render 'shared/error_messages', object: f.object %> <%= f.label :title %> <%= f.text_field :title, class: 'form-control' %> <%= f.label :p_type %> <%= f.select :p_type, ([['QuickWin', 'QuickWin'], ['Project', 'Project']]) %> <%= f.label :status %> <%= f.select :status, ([['Not Yet Started', 'Not Yet Started'], ['In Progress', 'In Progress'], ['In Testing', 'In Testing'], ['On Hold', 'On Hold'], ['Launched', 'Launched']]) %> <div class="field"> <%= f.text_area :description, placeholder: "Briefly summarise the purpose of this project..." %> </div> <%= f.submit "Save changes", class: "btn btn-primary" %> <% end %> </div> </div>

x=('hello world' "HELLO")${#x[*]}都打印相同的输出。

我理解${#x[@]}$@之间的区别,但我很有兴趣看到没有命令行参数的区别。

1 个答案:

答案 0 :(得分:0)

除非您有理由使用*,否则请始终使用@扩展。 @被添加到解决问题。

两者并不总是相同。涉及*的问题以空格和其他shell元字符开头(特别是引号,但是$和更多)。

*会让shell元字符处于打开状态,以便shell再次处理它们,如果您不想让它们进入数组,这通常会很糟糕。 @通过扩展每个数组元素来保护它们,就像它是一个单独引用的值一样,保留所有元字符完整。