При использовании строки пути в сценарии оболочки она будет преобразована в строку, содержащую дочерние элементы - PullRequest
0 голосов
/ 06 ноября 2019

Вот некоторый код bash

path='*'
echo $path

Если я выполняю код непосредственно в терминале, вывод будет

*

Но если я помещу его в скрипт оболочки, например, test.sh . Затем я выполняю test.sh , вывод будет таким:

test.sh file1 file2 file3

Я получил строку, содержащую все элементы по пути.

Почему два выхода отличаются? Если я хочу, чтобы второй вывод был первым, что означает, что я не должен передавать строку пути, когда я его использую, что мне делать?

1 Ответ

0 голосов
/ 06 ноября 2019

Я немного проверил. Вы можете изменить свой сценарий следующим образом:

path='*'
echo "$path"

, и он будет печатать * вместо файлов, если вы запустите его как сценарий bash.

Кажется, эхо можно использовать как альтернативу ls команда:

echo * означает список всех файлов в текущей папке.

echo *.jpg перечислит все файлы с суффиксом jpg, и если в текущей папке такого файла нет, echo *.jpg просто выведет "* .jpg".

Я думаю, что этоОтвет должен быть опубликован как комментарий, так как я не знаю, почему команда echo ведет себя так. Но у меня недостаточно репутации, чтобы добавлять комментарии, так что ...

...