Puncte:-1

expr: eroare de sintaxă: argument neașteptat âDesktopâ

drapel it

Iată scriptul meu bash pentru conversia temperaturii de intrare de la Celsius la Fahrenheit.

#!/bin/bash
echo "Introduceți temperatura în grade Celsius: "
citeste celsius
temp=$(expr $celsius * 9 / 5 + 32 )
echo „Temperatura în grade Fahrenheit: $temp”

Am primit acest mesaj de eroare:

expr: eroare de sintaxă: argument neașteptat âDesktopâ

Aveti vreo solutie?

Someone avatar
drapel my
Care este versiunea ta Ubuntu? Vă rugăm să [editați] și să adăugați câteva informații
Someone avatar
drapel my
Această întrebare are probleme grave de formatare sau de conținut. Este puțin probabil ca această întrebare să fie recuperată prin editare și ar putea fi necesar să fie eliminată
karel avatar
drapel sa
Textul scriptului bash din întrebare a fost copiat în răspunsul meu la această întrebare.
Puncte:2
drapel hr

The * simbolul este un caracter shell glob (generare nume de fișier), acesta se va extinde la o listă de fișiere neascunse din directorul curent - în cazul dvs., care pare să includă un Desktop articol.

Pentru a preveni acest lucru, fie trebuie să dezactivați shell globbing, folosind set -f sau set -o noglob:

#!/bin/bash
set -f
echo "Introduceți temperatura în grade Celsius: "
citeste celsius
temp=$(expr "$celsius" * 9 / 5 + 32 )
echo „Temperatura în grade Fahrenheit: $temp”

fie citează sau scapă de * caracter pentru a-l face literal:

#!/bin/bash
echo "Introduceți temperatura în grade Celsius: "
citeste celsius
temp=$(expr "$celsius" \* 9 / 5 + 32 )
echo „Temperatura în grade Fahrenheit: $temp”

În ambele cazuri, ar trebui să vă obișnuiți să citați duble expansiuni shell, cum ar fi $celsius, pentru a preveni extinderea shell-ului și împărțirea cuvintelor (mai ales atunci când acestea conțin intrări arbitrare ale utilizatorului).

Puncte:1
drapel sa

Scriptul bash corectat pentru conversia temperaturii de intrare de la Celsius la Fahrenheit folosind popularul bc program terminal în loc de expr in linia 4:

#!/bin/bash
echo "Introduceți temperatura în grade Celsius: "
citeste celsius
temp=`echo "scale=1; $celsius*1.8 + 32" | bc` 
echo „Temperatura în grade Fahrenheit: $temp”

bc pentru „calculator de bază” este un limbaj de calcul de precizie arbitrar. bc este mult mai intuitiv și mai ușor de utilizat decât lucrul stângaci și bâjbâind cu un expr eroare de sintaxă. Valoarea scară funcția este numărul de cifre după punctul zecimal din expresie.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.