コマンドライン引数として数値を追加するにはどうすればよいですか?

コマンドラインから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 

コメント

  • echoを追加してから、 read直接入力できます:read -p 'Please enter a number: ' yournumber

回答

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

「番号を入力してください:」というプロンプトが表示されたときにユーザーに番号を入力してもらいたい場合は、次のコマンドでスクリプトを使用できます。いくつかの修正:

#!/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. 

コメント

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

回答

“default = 10” & “sum = $”の間にスペースを入れないでください。これもデフォルトです&数値は、変数から読み取る前に$を付ける必要があります。

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

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

コメント

  • なるほど!分かりました。それは単なる間隔の問題でした。私は本当にこれを考えすぎました。助けてくれてありがとう!
  • $ 使用する必要はありません ' / div>算術式内。例:これを試してください:num=5;def=10;echo "sum = $((num + def))"

回答

これは、求めていることを実行するための最速の方法です:

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

出力:

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

コメント

  • 危険な可能性があります-./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
  • @mikeservを試してください。ただし、演習ではI 'それが懸念事項かどうかわからない。関係なくコメントありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です