Получение пользовательского ввода в качестве аргумента для скрипта - PullRequest
1 голос
/ 20 февраля 2020

Я пытаюсь создать сценарий 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

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

При опции 2)

2) echo "Check file size"
  echo -n "Enter a file name to check: "
  read -r  sourcefile
  echo /home/student/file_size "$sourcefile";;
  • Чтобы проверить, передается ли аргумент /home/student/filesize

  • Это будет быть хорошим и информативным, чтобы показать меню с номерами рядом с опцией.

0 голосов
/ 20 февраля 2020

Или запустите подписки с source или ., таким образом, подписчики получат доступ к переменным в основном скрипте

source /home/student/file_size
.      /home/student/file_size

И используйте параметр -p для read, чтобы минимизировать эхо-сигналы

read -r -p "Enter a file name to check: " sourcefile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...