Команда, не найденная ошибкой в сценарии Bash

Таким образом, я записал a bashscript.sh файл, чтобы проверить, если каталог project1_repo пусто после клонирования проекта.

Я записал четыре различных функции для аутентификации его, но все время я добираюсь command not found ошибка. Я проверил многократно, существует ли a syntax error но напрасно. Кто-то мог выручить меня?Спасибо.

Править: Ранее из-за опечатки project1_install_dir был назван colsim1_install_dir но отредактированная версия корректна.

#!/bin/bash

#path to install project1
function project1_install_dir() {
   while true; 
 do
  read -p "Enter FULL folder path where you want to install project1:" fullpath
  echo "you have enterd $fullpath. Please press 'y' to confirm and 'n' to enter again"
  read -p "Continue? (Y/N): " confirm 
  if [[ $confirm =~ ^([yY][eE][sS]|[yY])$ ]]; then
    break
  else
    continue         
  fi
done
 }

#clone project1
function clone_project1_repo() {
  git clone example git .     
    }

# four functions to Check whether cloning is successful
# function 1
function success_of_cloning_of_project1_repo3() {
  if find $fullpath/project1/project1_repo -mindepth 1 | read; then
     echo "dir not empty"
  else
     echo "dir empty"
  fi
}

# function 2
function success_of_cloning_of_project_repo2() {
DIR="$fullpath/project1/project1_repo"
if [ -n "$(ls -A $DIR)" ]; then
  echo "Take action $DIR is not Empty"
else
  echo "$DIR is Empty"
fi
}

# function 3    
function success_of_cloning_of_project_repo1() {
if [ -d $fullpath/project1/project1_repo ]; then
      [ -n "$(ls -A $fullpath/project1/project1_repo)" ] && echo "Not Empty" || echo "Empty"
else
   :
fi
    }

# function 4
function success_of_cloning_of_project_repo() {
while true;
 do
  if [ -n "$(ls -A $fullpath/project1/project1_repo)" ]; then
    echo "cloning of project1_repo is successful"               
    break
  else
    echo "cloning of project1_repo is NOT successful."
    continue      
  fi                
 done
}

#calling the functions
    function main() {
       project1_install_dir
       success_of_cloning_of_project1_repo3 
       success_of_cloning_of_project1_repo2  
       success_of_cloning_of_project1_repo1
       success_of_cloning_of_project1_repo
    }

    main

Терминальный вывод:

jen@ex343:tdk/jen$ source bash_file_test.sh 
Enter FULL folder path where you want to install project1:/tdk/jen

you have enterd /tdk/jen. Please press 'y' to confirm and 'n' to enter again
 Continue? (Y/N): y
 You have chosen yes
-bash: success_of_cloning_of_project1_repo3: command not found
-bash: success_of_cloning_of_project1_repo2: command not found
-bash: success_of_cloning_of_project1_repo1: command not found
-bash: success_of_cloning_of_project1_repo: command not found
2
задан 18 March 2019 в 13:38

1 ответ

Вставка кода в https://www.shellcheck.net/отчеты:

$ shellcheck myscript

Line 7:
  read -p "Enter FULL folder path where you want to install project1:" fullpath
  ^-- SC2162: read without -r will mangle backslashes.

Line 9:
  read -p "Continue? (Y/N): " confirm
  ^-- SC2162: read without -r will mangle backslashes.

Line 26:
  if find $fullpath/project1/project1_repo -mindepth 1 | read; then
          ^-- SC2086: Double quote to prevent globbing and word splitting.
                                                         ^-- SC2162: read without -r will mangle backslashes.

Did you mean: (apply this, apply all SC2086)
  if find "$fullpath"/project1/project1_repo -mindepth 1 | read; then

Line 36:
if [ -n "$(ls -A $DIR)" ]; then
                 ^-- SC2086: Double quote to prevent globbing and word splitting.

Did you mean: (apply this, apply all SC2086)
if [ -n "$(ls -A "$DIR")" ]; then

Line 45:
if [ -d $fullpath/project1/project1_repo ]; then
        ^-- SC2086: Double quote to prevent globbing and word splitting.

Did you mean: (apply this, apply all SC2086)
if [ -d "$fullpath"/project1/project1_repo ]; then

Line 46:
      [ -n "$(ls -A $fullpath/project1/project1_repo)" ] && echo "Not Empty" || echo "Empty"
                    ^-- SC2086: Double quote to prevent globbing and word splitting.

Did you mean: (apply this, apply all SC2086)
      [ -n "$(ls -A "$fullpath"/project1/project1_repo)" ] && echo "Not Empty" || echo "Empty"

Line 56:
  if [ -n "$(ls -A $fullpath/project1/project1_repo)" ]; then
                   ^-- SC2086: Double quote to prevent globbing and word splitting.

Did you mean: (apply this, apply all SC2086)
  if [ -n "$(ls -A "$fullpath"/project1/project1_repo)" ]; then

Можно следовать за предложением для использования "$fullpath" и любые другие рекомендации в комментариях выше. После фиксации текущих ошибок отчеты ShellCheck это может затем сообщить о дополнительных ошибках при выполнении его снова.

4
ответ дан 2 December 2019 в 02:11

Другие вопросы по тегам:

Похожие вопросы: