у меня есть домашнее задание, написать программу schedsim.sh с:Ошибка с getopts в оболочке
schedsim.sh [-h] [-c x] -i filename
В этом:
-h:
печать имени пользователя
-c:
печать х + 1 (х введенный с клавиатуры), если не ввести x, распечатать 1
-i:
Размер файла имени файла, имя файла - это имя файла, который вступил.
Мой код:
#i/bin/bash/
while getopts ":hc:i:" Option
do
case $Option in
h)
whoami
;;
c) a=$OPTARG
if [ -z "$a" ]; then
a=1
else
a=`expr $a + 1`
fi
echo $a
;;
i) echo 'Size of file: Kylobytes'
ls -s $OPTARG
;;
*) echo 'sonething wrong'
;;
esac
done
Однако, когда я называю:
./schedsim.sh -c -i abc.txt
Ошибка.
Извините, мой английский плохой!
Первое, что я вам скажу, это то, что ваша «shebang» на первой строке неверна. Это не должно быть '#i ...' Оно должно иметь восклицательный знак '!' Вместо 'i'. Как и в, это должно быть '#! ...'. –
** Что ** ошибка вы получаете, когда называете это? Работает ли какой-либо из параметров? Неужели 'getopts' сам не работает? –
Возможный дубликат [Bash Script с аргументом анализа в Linux] (http://stackoverflow.com/questions/32826395/bash-script-with-parsing-argument-in-linux) –