两行信息量大的shell代码

是这样, python有join函数, 但shell却没有, 我看到别人写的两个函数, 发现涉及到一些我不会的知识点, 尽管短, 但信息量却很大.

function join_by { local d=$1; shift; local f=$1; shift; printf %s "$f" "${@/#/$d}"; }
function join_by { local IFS="$1"; shift; printf "%s" "$*"; }

这两行代码包括了这些知识点:

  • IFS的作用
  • shift的作用
  • ${//}这种展开方式中, #的含义
  • @和*这两个变量的区别

以及这个问题

  • 第一个函数最后能用"\({*/#/\)d}"么?
  • 第二个函数最后能用"\({@/#/\)d}"么?

会有什么结果? 为什么?
顺便说, 如果没有"", 的确都是可以的, 但是通常需要""避免展开

不解释, 只是分享. 本身也是很有用的函数.

posted @ 2021-01-24 17:59  Tokubara  阅读(85)  评论(0编辑  收藏  举报