以下を実行するスクリプトがある場合
[alice]$ math
Enter a number: 5
Number squared: 25
Number divided: 1
Number to power of 3: 125
数学スクリプトの出力をテーブルとして構成しますが、複数の引数を使用して「除数」を表示しない別のスクリプトを作成したいと思います。例えば
[alice]$ newprogram 5 10
*
*Number squared power of 3
5 25 125
10 100 1000
また、数学スクリプトは/home/alice
新しいプログラムが配置されています/home/user
。この問題にどのように対処する必要がありますか?
ベストアンサー1
私を見て回答既存のスクリプトにパラメータを渡す方法の詳細については、前の質問を参照してください。この出力の解析は、前の出力よりも難しいでしょう。
新しいバージョンをスクリプト化する方がはるかに簡単です。このようにナンセンスを解析することは主なPITAです。
以下は、無関係な出力(ヘッダーなど)を印刷する元のエラーを繰り返すことなくこれを行うバージョンです。
#! /bin/bash
for i in "$@" ; do
printf "%i\t%i\t%i\n" $i $(($i * $i)) $(($i * $i *$i))
done
-v
以下は、(verbose)オプションを使用している場合にオプションでタイトルを印刷するバージョンです。
#! /bin/bash
verbose=0
while getopts "v" opt ; do
case "$opt" in
v) verbose=1 ;;
esac
done
shift "$((OPTIND-1))"
[ "$verbose" = "1" ] && printf "%s\t%s\t%s\n" 'Number' 'Squared' 'Power of 3'
for i in "$@" ; do
printf "%i\t%i\t%i\n" $i $(($i * $i)) $(($i * $i *$i))
done