2013-08-27 2 views
0

поэтому у меня есть Баш скрипт myCMD, который принимает в свои строки аргументов в виде функции()делают Баш принимать функциональные параметры

однако, когда я вхожу в командной строке:

myCMD function() 

его пожалуется -bash: syntax error near unexpected token '('

Когда я myCMD "function()" хотя он будет работать

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

Есть ли способ настроить терминал/мой скрипт так, чтобы, если вы просто введите myCMD function(), он будет обрабатывать function() в виде строки и не будет жаловаться соответственно даже без кавычек?

+0

хммм. Что вы хотите с этим делать? – Jiminion

+0

Вы можете ввести «функцию», а затем добавить парсеры позже. – Jiminion

ответ

0

В bash «функция» является зарезервированным словом, поэтому будьте осторожны с этим.

https://www.gnu.org/software/bash/manual/html_node/Reserved-Word-Index.html

Почему бы не изменить myCMD сценарий, чтобы сделать то, что вы хотите?

Вы также можете обернуть myCMD с помощью команды чтения

#!/bin/bash 
read line 
myCMD "$line" 

Использование требует вызова обертку затем ввести строку:

> myCMDWrapper 
function() 
myCMD was invoked with function() 
1

() Необходимо избегать некоторых способов, как bash рассматривает их специально в противном случае. Котировки выйдут, а также \(\). Или вы можете переименовать function(), чтобы не было () от своего имени.

0

Большинство снарядов не только Баш лечит () специально под открытым небом, так у вас нет выбора, кроме как процитировать его: "()", '()', $'()' или \(\).

Смежные вопросы