Я пытаюсь создать сценарий bash, который дает пользователю варианты 1-5, причем 5 - это выход. Для варианта 2 я хочу, чтобы можно было передавать имя файла в качестве аргумента для скрипта file_size, но даже когда я перехватываю пользовательский ввод, он все равно говорит об ошибке, пожалуйста, введите одно имя файла в качестве аргумента. Я не уверен, почему это не передать в качестве аргумента, любая помощь будет оценена.
#!/bin/bash
# usage: ./menu_script
exitvar=false
while [ $exitvar = "false" ] # keep looping until exit equal true
do
echo -n "Enter a number 1 through 5, 5 to exit"
read number
case $number in
1) echo "Move empty files"
/home/student/move_empty;;
2) echo "Check file size"
echo -n "Enter a file name to check: "
read sourcefile
/home/student/file_size;;
3) echo "Option3";;
4) echo "File check rwx"
echo -n "Enter a file name to check: "
read sourcefile
if [ -e $sourcefile ] # does the source file exist?
then
echo $sourcefile "exists!"
fi
# find out if file has write permission or not
[ -w $sourcefile ] && W="Write = yes" || W="Write = No"
# find out if file has excute permission or not
[ -x $sourcefile ] && X="Execute = yes" || X="Execute = No"
# find out if file has read permission or not
[ -r $sourcefile ] && R="Read = yes" || R="Read = No"
echo "$sourcefile permissions"
echo "$W"
echo "$R"
echo "$X"
;;
5) echo "exit"
exitvar="true"
;;
*) echo "Invalid number try again"
;;
esac
done