コマンドライン引数として数値をどのように追加しますか?


10

コマンドラインから1つの数字と、デフォルトのように1つの数字を追加しようとしています。例:ユーザーが50を入力すると、スクリプトは10を追加します(デフォルトの数として)。

./script 50
The sum of 50+ 10 is 60. 

これが今のところです。

echo -n "Please enter a number: " 
read number 
default = 10
sum = $((default + number)) // this line does not seem to work
echo "The sum of $number and 10 is $sum."

構文が間違っていますか?私が正しい軌道に乗っているかどうかはわかりません。数字を間違って追加していますか?代わりにawkを使用する必要がありますか?

let sum = $default + $number 

追加するだけで、echoINGの代わりにread直接を使用する代わりに、次のように入力できます。read -p 'Please enter a number: ' yournumber
Tyþë-ØJun

回答:


2

スペースが原因でエラーが発生しています。

「数字を入力してください:」というプロンプトが表示されたときにユーザーに数字を入力させたい場合は、次のように修正してスクリプトを使用できます。

#!/bin/bash
echo -n "Please enter a number: " 
read number 
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."

小切手:

./temp.sh
Please enter a number: 50
The sum of 50 and 10 is 60.

ユーザーがスクリプトの引数として数値を入力できるようにする場合は、以下のスクリプトを使用できます。

#!/bin/bash
number="$1"
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."

小切手:

./temp.sh 50
The sum of 50 and 10 is 60.

3
単純な整数演算を行うためだけにbcを実行するのはなぜですか?
PM 2Ring

14

「デフォルト= 10」と「合計= $」の間にスペースを入れないでください。また、変数から読み取る前に、デフォルトと数値の前に$を付ける必要があります。

このスクリプトは、以下のように記述した場合、期待どおりに機能します。

#!/bin/bash

echo -n "Please enter a number: " 
read number 
default=10
sum=$(($default + $number))
echo "The sum of $number and 10 is $sum."

ああなるほど!分かりました。それはただスペーシングの問題でした。私は本当にこれを考えすぎました。お手伝いありがとう!
techiegeek 14

3
算術式の内部を使用する必要がないことに注意してください$。たとえば、これを試してください:num=5;def=10;echo "sum = $((num + def))"
PM 2Ring

4

これは、あなたが求めていることをする最も速い方法です:

#!/bin/bash
echo "The sum of $1 + 10 is $(($1 + 10))."

出力:

creme@fraiche:~/$ ./script.sh 50
The sum of 50 + 10 is 60.

1
危険かもしれません-試してみてください./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
mikeserv '12 / 12/14

@mikeserv非常に正確ですが、練習問題であるかどうかはわかりません。とにかくコメントありがとうございます。
cremefraiche 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.