Это сценарий bash, который я пишу. Вы можете увидеть ожидаемый результат. Но я получаю кое-что еще. Где я мог ошибиться?
#!/bin/bash
#Demostrate how read actually works
echo What cars do you like?
read car1 car2 car3
echo Your first car was: $car1
echo Your second car was: $car2
echo Your third car was: $car3
Ожидаемый результат
./cars.sh
What cars do you like?
Jaguar Maserati Bentley Lotus
Your first car was: Jaguar
Your second car was: Maserati
Your third car was: Bentley Lotus
Фактический выход
[root@localhost ~]# ./cars.sh
What cars do you like?
Jaguar
Your first car was: Jaguar
Your second car was:
Your third car was:
[root@localhost ~]#
Если у вас есть переменное количество входных аргументов, вы можете использовать переменную массива, используя read -a variable_name
как в этом примере.
Пример: cars.sh
#!/bin/bash
read -a cars -p "What cars do you like? "
echo "You have entered ${#cars[@]} cars"
declare -i count=0
for car in "${cars[@]}"; do
echo "Car number $(( ++count )) was: $car"
done
Вывод:
$ ./cars.sh
What cars do you like? bmw audi mercedes
You have entered 3 cars
Car number 1 was: bmw
Car number 2 was: audi
Car number 3 was: mercedes
Во втором случае вы не предоставляете все значения переменных. В вашем сценарии нет ничего плохого.
# bash -x cars.sh
# What cars do you like?
# Jaguar Maserati Bentley Lotus
Попробуйте выполнить отладку с помощью -x, если проблема не исчезнет.