linux – bash:一次获取多个数组元素的简单方法?
发布时间:2020-12-13 23:57:04 所属栏目:Linux 来源:网络整理
导读:是否有* nix命令格式化输入(由换行符分隔),以便每行只显示特定的最大元素数?例如: $yes x | head -10 | command 4 x x x xx x x xx x 我写了一个执行此任务的快速bash脚本(如下所示),但它似乎很长并且可能效率低下.有一个更好的方法吗? #!/bin/shif [ -z
是否有* nix命令格式化输入(由换行符分隔),以便每行只显示特定的最大元素数?例如:
$yes x | head -10 | command 4 x x x x x x x x x x 我写了一个执行此任务的快速bash脚本(如下所示),但它似乎很长并且可能效率低下.有一个更好的方法吗? #!/bin/sh if [ -z "$1" -o -z "$2" ]; then echo Usage `basename $0` {rows} {columns} exit 1 fi ROWS=$1 COLS=$2 input=$(yes x | head -${ROWS}) lines=() i=0 j=0 eol=0 for x in ${input[*]} do lines[$i]="${lines[$i]} $x" j=`expr $j + 1` eol=0 if [ $j -ge ${COLS} ]; then echo lines[$i] = ${lines[$i]} i=`expr $i + 1` j=0 eol=1 fi done if [ ${eol} -eq 0 ]; then echo lines[$i] = ${lines[$i]} fi 解决方法printf '%-10s%-10s%-10s%sn' $(command | command) printf将一次消耗格式字符串中指定的参数数量,并继续使用,直到它们全部消耗完为止. 示范: $printf '%-10s%-10s%-10s%sn' $(yes x | head -n 10) x x x x x x x x x x $printf '%-10s%-10s%-10s%sn' $(<speech) now is the time for all good men to come to the aid of their country (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |