Я изучаю BASH-скрипты, и у меня есть проблема. Я написал генератор, который проверяет, есть ли сценарий с тем же именем, что и заданный, и если он не делает его, делает его исполняемым и дает ему правильную shebang. Но это не сработает. Я хотел, чтобы он вышел, когда уже есть один скрипт с этим именем. Можете ли вы сказать мне, что я делаю неправильно?Как остановить скрипт, когда «if» is false
#!/bin/bash
clear
echo "Name the script"
read name
echo "What shell? (bash/sh)"
read type
if [ -e ./$name ]
then
echo "You already have that script"
read
exit
else
touch $name
chmod 755 $name
fi
case $type in
"bash") echo '#!/bin/bash' > $name ;;
"sh") echo '#!/bin/bash' > $name ;;
*) echo "I don't know what do you want" ;;
esac
vim $name
У вас есть 'vim' в конце. Это предназначено? – fedorqui
Похоже, он должен работать. Каким образом это не работает? –
В качестве побочного примечания вы должны проверить '-x' и' -e' (или еще лучше '-f'). Потому что, если '-e' проверяется, сценарий все еще не может иметь разрешения на выполнение (отметьте с помощью' -x'). Выход должен работать здесь, но указание кода выхода - лучшая практика (например, 'exit 1'), хотя это и не нужно. – ShellFish