Нет такой ошибки файла в bash скрипте для вывода списка файлов - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь написать скрипт bash, в котором перечислены все файлы в каталоге. Вот мой код:

#!/bin/bash

FOLDER_NAME=$1

if ! [ -d "$FOLDER_NAME" ]; then
    echo "Error: Folder does not exist!" 
    exit 0 
fi

FILE_NAMES=$("ls ${FOLDER_NAME}/*")

echo $FILE_NAMES

Когда я запускаю свой скрипт с любым каталогом (скажем, так), вывод показывает

ls ./*: No such file or directory

Но когда я запускаю эту команду ls в моей оболочке в списках все файлы правильно. Я довольно новичок в bash. Я не понимаю, что не так в коде.

1 Ответ

1 голос
/ 02 апреля 2020

Проблема в том, как вы используете двойные кавычки в FILE_NAMES=$("ls ${FOLDER_NAME}/*"). Примечание 1: использование "$1" вместо $1 поможет вам, когда вы столкнетесь с папками с пробелами в их имени; Примечание 2: статус выхода 0 означает успех в Linux, вместо него следует использовать другой номер. Попробуйте это:

#!/bin/bash

FOLDER_NAME="$1"

if ! [ -d "$FOLDER_NAME" ]; then
    echo "Error: Folder does not exist!" 
    exit 1 
fi

FILE_NAMES=$(ls "$FOLDER_NAME"/*)

echo $FILE_NAMES
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...