Возможно, я смотрю на это неправильный путь.. Но здесь я, что я пытаюсь сделать. Сделайте большую часть моей работы с Java, но просто переключенный на Unix (удар) среда. Я делаю это:
[~/Desktop/bashPlay]% cat myFunc
#!/bin/bash
ls2(){
echo "Hello World"
}
ls3(){
echo "Testing"
}
echo "this is a test"
ls2 # this calls a function
[~/Desktop/bashPlay]% myFunc
this is a test
Hello World
Но у меня есть две функции в моем файле, и я хочу смочь назвать их отдельно из командной строки. Т.е.: myFunc.ls2()
или даже просто ls2
. Я знаю, что могу добавить функции к моему .bashrc
файл, но является там любым другим способом, которым я могу выполнить эти функции, не добавляя их к моему .bashrc
?
Один способ сделать это, которое включает немного больше ввода, через source
команда. Для вызывания функции от myFunc, Вы могли использовать source myFunc; ls2
и это произвело бы Привет Мир.
Так, например, мне назвали файл say.sh
:
#!/bin/bash
function talk()
{
echo "hi!"
}
теперь я хочу звонить, это talk()
функция из командной строки:
[john@awesome ~]$ source say.sh; talk hi!
назвать его из другого сценария удара:
#!/bin/bash
source say.sh
talk
Можно также поместить каждого в отдельный сценарий и добавить их в каталоге, который находится в переменной ПУТИ.
так, например, в одном названном сценарии hello
Вы имели бы:
#!/bin/bash
echo "Hello World"
теперь поместите его в один из каталогов в Вашем ПУТИ, который можно просмотреть путем выполнения echo $PATH
. Можно добавить другой каталог к ПУТИ, если Вы хотели бы или использовали бы существующий. После того как Вы скопировали файл там, сделайте его исполняемым файлом с chmod +x filename
.
Точечный оператор или source
встроенный в bash
походит import
оператор в Java.
Можно читать больше о точечном операторе или source
встроенный.
Другой подход должен был бы создать названный сценарий functions.sh
(в ~/bin
каталог, например).
В этом сценарии Вы добавляете все свои персональные функциональные определения (скажем, каждый раз, когда Вы добавляете функцию, Вы добавляете его к этому файлу...),
Наконец просто необходимо добавить source ~/bin/functions.sh
строка к Вашему .bashrc
файл. Таким образом, Вы сможете назвать их из командной строки, Вашего .bashrc
останется чистым, и у Вас будет определенное место для Ваших персональных функций.