Hogyan adhat hozzá egy számot parancssori argumentumként?

1 számot próbálok hozzáadni a parancssorból, és egy számot alapértelmezettként. Például: Amikor a felhasználó beírja az 50-es számot, a szkript hozzáad 10-et (alapértelmezett számként).

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

Ez az, amire eddig rendelkezem.

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." 

Helytelen a szintaxisom? Nem vagyok biztos benne, hogy jó úton haladok-e. Helytelenül adom a számokat? Helyette használjam az awk-t?

let sum = $default + $number 

Megjegyzések

  • Csak hozzáadásra, a echo helyett, majd a read közvetlenül beírhatja: read -p 'Please enter a number: ' yournumber

Válasz

A szóközök okozzák a hibákat.

Ha azt szeretné, hogy a felhasználó írja be a számot, amikor a program “Kérem, írjon be egy számot:” kérést kap, akkor a néhány helyesbítés:

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

Ellenőrizze:

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

Ha szeretné, ha minket szeretne Ha a számot argumentumként szeretné bevinni a szkriptbe, használhatja az alábbi parancsfájlt:

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

Ellenőrizze:

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

Megjegyzések

  • Miért bajlódna a bc futtatásával, csak egyszerű egész számtani művelet elvégzése érdekében?

Válasz

Nem lehet szóköz az “default = 10” között & “sum = $”, szintén alapértelmezett & szám előtt $ kell lennie, hogy elolvashassa a változókból.

Ezután a szkript a várakozásoknak megfelelően működik, ha az alábbiak szerint írom;

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

Megjegyzések

  • Ó, látom! Most már értem. Ez csak egy térköz kérdés volt. Nagyon átgondoltam ezt. Köszönjük a segítséget!
  • Ne feledje, hogy nem ' nem kell a $ az aritmetikai kifejezés belsejében. Például próbálja ki: num=5;def=10;echo "sum = $((num + def))"

Válasz

Ez a leggyorsabb módja annak, amit kért:

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

Kimenet:

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

Megjegyzések

  • amelyek veszélyesek lehetnek – próbálkozzon ./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
  • @mikeserv Nagyon pontos, azonban az I gyakorlathoz ' nem vagyok benne biztos, hogy aggodalomra ad okot. Köszönjük észrevételeit ettől függetlenül.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük