两行信息量大的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}"么?
会有什么结果? 为什么?
顺便说, 如果没有""
, 的确都是可以的, 但是通常需要""
避免展开
不解释, 只是分享. 本身也是很有用的函数.