一連のコマンドを自動化するスクリプトを作成しています。出力を右揃えで色付きにしたいと考えています。これまでのところ、どちらか一方を取得することはできますが、両方を達成することはできませんでした. 私の(テスト)スクリプトは次のとおりです。
#!/bin/bash
columns=$(tput cols)
txtgrn=$(tput setaf 2) # Green
txtpur=$(tput setaf 5) # Purple
txtrst=$(tput sgr0) # Text reset.
col1="60"
let "col2 = $columns - $col1"
# Colored text, left-aligned
string1="${txtpur}Running update 1${txtrst}"
string2="${txtgrn}(1 of 10)${txtrst}"
printf "%-*s%*s\n" "$col1" "$string1" "$col2" "$string2"
string1="${txtpur}Running update 10${txtrst}"
string2="${txtgrn}(10 of 10)${txtrst}"
printf "%-*s%*s\n" "$col1" "$string1" "$col2" "$string2"
# Non-colored text, right-aligned
string1="Running update 1"
string2="(1 of 10)"
printf "%-*s%*s\n" "$col1" "$string1" "$col2" "$string2"
string1="Running update 10"
string2="(10 of 10)"
printf "%-*s%*s\n" "$col1" "$string1" "$col2" "$string2"
exit 0
標準の Mac ターミナル プログラムで Mac OS 10.7.5 を使用しています。