0

The code I have is supposed to ask for the user to enter a name of a directory they wish to create, then it is supposed to ask to edit files within the directory, however when after I create the directory the script just doesnt continue, i can't see any errors, but it's always easier for a fresh set of eyes to critique code.

I have also added files to the directory but it never asks me if I wanted to edit them.

#!/bin/bash #Testing to see if input is empty if [ $# -lt 1 ]; then echo "Empty Directory will be created" fi #Get the name of the directory by the user, also creating a variable named directory read -p "Please enter the name of the drectory you wish to create: " directory #Check if the directory exists, if it doesn't it will be created in the Home folder if [ ! -d ~/$directory ]; then #Creating the directory if it doesnt exist mkdir ~/$directory/ fi #Create files individually in the directory for i in "$@"; do touch ~/$directory/$i #Asking the user if they wish to edit the files they have created inside the directory read -p "edit file $i (Y/N)? " edit #If they answer yes then read the lines entered by the user if [["$edit" = "Y" || "$edit" = "y"]]; then line="" #Stores the amount of words added to the file count=0 #Reads the lines enetered by the user echo "Please enter your text to be added into the file (Enter \"end\" to exit the editing):" read line #The script will keep reading the words entered in the file until the user initiates the end command "end" while ["$line" != "end"]; do #repeat the words entered into the file echo "$line" >> ~/directory/$i #Get the amount of words entered into the file count=$(($count + $(wc -w <<< $line))) #read the next line from user input read line done echo "$count words have been written to the file" fi done 
9
  • You'll want to make sure that the user is in their ~/directory when running the script. If they are running the script from anywhere else on the system ~/directory, then the files aren't going to be there. Commented Nov 30, 2020 at 22:46
  • 5
    Why are bash tests so picky about whitespace? - also you may find www.shellcheck.net helpful Commented Nov 30, 2020 at 22:46
  • 1. Some variables are not quoted 2. ~ is not recommended to be used in scripts 3. set -x almost always helps Commented Nov 30, 2020 at 23:29
  • @NasirRiley so I should be in the folder I created directory and then run the script? Commented Nov 30, 2020 at 23:46
  • @BlueMoon Yes. In fact, just to make sure, they should be in /home/user/directory as the tilde may not be expanded depending on the environment. Commented Nov 30, 2020 at 23:54

1 Answer 1

2

Change this line

if [["$edit" = "Y" || "$edit" = "y"]]; then 

With this line:

if [[ "$edit" = "Y" || "$edit" = "y" ]]; then 

You are missing a space after [[ and before ]].

Also: Better use $HOME instead of ~

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.