コマンドラインから3つの数字を取得して合計し、出力を「1 + 2 + 3 = 6」とマークするスクリプトを完成させようとしています。これは私のコードです。
clear
echo
for count
do
echo -n "$count + "
done
echo
echo
echo
echo All Done
「1 + 2 + 3 +」を出力することができますが、最後のプラス記号または「= 6」を削除する方法がわかりません。
ベストアンサー1
確立された多くの同様の問題の1つに対する解決策:
#!/bin/sh
IFS=+
printf '%s = %s\n' "$*" "$(($*))"
"$*"
で区切られた位置引数(コマンド行引数)に展開されます$IFS
。私たちは別々にIFS
設定しました+
。"$(($*))"
算術置換子を使用して、コマンドライン引数の$(( ... ))
算術値とその間の値を計算します。$*
+
printf
2つの文字列の間に1つの2つの文字列を出力するために使用されます=
。
テスト:
$ ./script.sh 1 2 3
1+2+3 = 6
$ ./script.sh -1 2 3
-1+2+3 = 4
$ ./script.sh 1 2 3 4 2 2 3 1
1+2+3+4+2+2+3+1 = 18
上記のスクリプトで欠けているのは、提供されたコマンドライン引数が整数であることを確認することです。これは質問の1つの値に対して行われます。」入力された数値が整数であることを確認する」。