嘗試調整以下函式以使用所有引數,而不僅僅是第一個。
代碼應該在傳遞的每個引數開始之前引入 nc 空格。
每個移位的引數都必須在新行上。第一個引數是數字,定義移位量。
#!/bin/bash
shifted-block ()
{
if (( $# == 1 )); then
nc=0 ; arg="$1"
elif (( $# >= 2 )); then
nc="$1" ; arg="$2"
else
nc=0 ; arg="$1"
fi
nw=$(( nc ${#arg} ))
printf "%${nw}s\n" "$arg"
}
uj5u.com熱心網友回復:
這是一個解決方案:
shifted-block ()
{
local nc=0
if (($# > 1)); then nc=$1 ; shift ; fi
local arg nw
for arg in "$@" ; do
nw=$(( nc ${#arg} ))
printf "%${nw}s\n" "$arg"
done
}
uj5u.com熱心網友回復:
下面是一個沒有使用顯式回圈的版本
shifted-block () {
(( $# > 1 )) &&
printf -v leading_blanks '%*s' "$1" "" &&
shift &&
printf '%s\n' "${@/#/$leading_blanks}"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/378764.html
