#bash
Вопрос:
Я пытаюсь создать сценарий bash, в котором вы вводите файлы/каталоги, но каждый раз, когда я добираюсь до последней части, он продолжает говорить-> tar: Трусливо отказывается создавать пустой архив. Вот мой сценарий. Скрипт работает до тех пор, пока он не спросит, следует ли сжимать эти файлы
#!/bin/bash
echo "enter some files/directorys to be backed up:"
read $*
if [ -f $* -o -d $* ]
then
echo $* its a valid file/directory
echo "Where/which folder is the file stored??"
read location
if [ -d $location ]
then
echo "Its a valid location"
fi
echo "Should these files be compressed? (Y/N)"
read ans
if [ $ans = Y -o $ans = y ]
then
sudo tar -czvf $*.tar.gz $*
echo "success"
elif [ $ans = N -o $ans = n ]
then
sudo tar -cvf $*.tar $*
fi
else
echo $* invalid
fi
Комментарии:
1. Строка, начинающаяся с #!/bin/bash, и строка, заканчивающаяся на else echo $* недопустимый fi, является частью сценария
2. Как ты думаешь
read $*
, что делает?3. Кроме того,
-f
и-d
не работайте с несколькими аргументами. Они проверяют, существует ли ровно одно имя файла или каталога. (-o
вообще не рекомендуется; используйте[ -f ... ] || [ -d ... ]
вместо этого.4.
$*
это список из нескольких аргументов; вы не должны использовать его, если он гарантированно будет одним аргументом. Используйте$1
для этого.5. И, наконец, запустите свой сценарий через shellcheck. проверьте и исправьте любые рекомендации, сделанные там, прежде чем задавать свой вопрос.