Como você adiciona um número como um argumento de linha de comando?

6

Estou tentando adicionar 1 número na linha de comando e um número como um padrão. Por exemplo: Quando o usuário digitar o número 50, o script adicionará 10 (como o número padrão).

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

Isso é o que eu tenho até agora.

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

Eu tenho a sintaxe errada? Não tenho certeza se estou no caminho certo. Estou adicionando os números errado? Devo usar o awk em vez disso?

let sum = $default + $number 
    
por techiegeek 12.12.2014 / 10:36

3 respostas

-1

Os espaços estão causando os erros.

Se você quiser que o usuário insira o número quando ele for solicitado como "Por favor, digite um número:", você pode usar o seu script com algumas correções como:

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

Verifique:

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

Se você quiser que o usuário insira o número como um argumento para o script, você pode usar o script abaixo:

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

Verifique:

./temp.sh 50
The sum of 50 and 10 is 60.
    
por 12.12.2014 / 10:46
8

Você não deve ter espaços entre "default = 10" & "sum = $", também padrão & número deve ter $ antes deles para ler as variáveis.

O script funciona como esperado para mim, quando escrito da seguinte forma:

#!/bin/bash

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

Esta é a maneira mais rápida de fazer o que você está pedindo:

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

Saída:

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

Tags