Вы не должны пытаться проанализировать вывод ls
.
Кроме того, необходимо заключить Ваш в кавычки "$file"
получать любой пробел. См. http://www.grymoire.com/Unix/Quote.html
Что-то вроде этого могло бы достигнуть того, что Вы после:
for file in *; do touch "$file"; done
Посмотрите первые две Ловушки Bash для более полного объяснения.
Сценарий не может продвинуть определения до Вас. Необходимо ввести их из сценария путем определения источника их. Это сделано . /usr/bin/cdjs
(если сценарий был в/usr/bin/cdjs). После этого можно использовать cdjs
в любое время.
Ваш коллега, возможно, предлагал делать сценарии функций вместо этого. cdjs
функция может быть сделана сценарием, но для нее для работы необходимо получить сценарий каждый раз, когда Вы используете ее, как это: . cd2js
.
Чтобы сделать это, у Вас был бы файл /usr/bin/cd2js
который является исполняемым файлом и содержит:
$/bin/sh
cd /domains/"$1"/applications/j2ee-apps
Если Вы часто делаете ограниченное количество вещей в том каталоге, Вы могли бы хотеть сделать несколько сценариев, который делает те вещи для Вас.
Таким образом, у Вас может быть сценарий как это:
#!/bin/sh
ls /domains/"$1"/applications/j2ee-apps/
И помещенный это в /usr/bin/lsj2
. Затем можно просто сделать lsj2 some-domain-1
в любое время для наблюдения содержания.
Существует две полностью отдельных вещи на работе здесь. Сценарии оболочки являются исполняемыми файлами, которые можно выполнить непосредственно, поэтому при создании файла /usr/bin/foo
(Вы не должны вручную помещать материал там, но так или иначе), Вы сможете работать foo
и это выполнило бы это:
$ cat /usr/bin/foo
#!/bin/bash
echo One
$ foo
One
Функции являются также исполняемым файлом по имени, но они должны быть определены сначала, который происходит, когда Вы вводите их непосредственно в оболочку или получаете файл, который содержит их с source
или .
команды:
$ function bar() {echo Two;}
$ bar
Two
$ cat functions.sh
function baz() {echo Three;}
$ baz
command not found: baz
$ . functions.sh
$ baz
Three
Определение функций в файлах, которые находятся на Вашем пути, ничего не сделает; все еще необходимо получить те файлы в сценарии входа в систему. Если Вы хотите сделать отдельные сценарии, Вы могли бы также просто назвать их тем же как их функции и избавиться от функции полностью, таким образом, можно просто позвать сценарий по имени
Возможно, я должен поместить каждую функцию в свой собственный файл с именем функции как имя файла и взломать код из функций? Я думал бы, что у меня мог быть единственный сценарий с несколькими функциями, экспортируемыми в путь...