В этом цикле нет ничего, что требовало бы ввода. $1
предоставляется пользователем один раз, когда он запускает скрипт (еще до того, как цикл запускается). Стандартный способ запроса ввода в сценарии оболочки - команда read
. Примерно так:
while read -p "Enter a directory to create: " file; do
mkdir "$file"
done
Этот цикл завершится, когда он получит конец файла, что означает, что пользователь должен нажать Control-D, чтобы выйти из него. Если вы хотите выйти, если пользователь просто нажимает return, ничего не вводя, вы можете сделать это:
while read -p "Enter a directory to create: " file; do
if [ -z "$file" ]; then
echo "Error: no input" >&2
break # This exits the while loop
fi
mkdir "$file"
done