Параметры функции функции внутри команды / bin / bash - PullRequest
0 голосов
/ 25 февраля 2019

Мне пришлось использовать некоторый код bash, вызываемый из / bin / bash, в качестве команды после опции -c.Я получил кое-что, что трудно понять.Это прошло, как ожидалось:

root@punk:/home/s# function a () { echo $1 "world";}&&a hello
hello world
root@punk:/home/s# 

Но при этом пропустил параметр функции

root@punk:/home/s# /bin/bash -c "function a () { echo $1 "world";}&&a hello"
world
root@punk:/home/s# 

Как исправить второй случай?

1 Ответ

0 голосов
/ 25 февраля 2019

Поскольку вы используете двойные кавычки, с

/bin/bash -c "function a () { echo $1 "world";} && a hello"

будет заменено текущее значение $1, которое должно быть пустым в вашей среде, чтобы оно стало

/bin/bash -c "function a () { echo "world";} && a hello"

что на самом деле

/bin/bash -c "function a () { echo world;} && a hello"

.

Вы можете использовать одинарные кавычки для внешнего цитирования:

[STEP 101] # /bin/bash -c 'function a () { echo $1 "world";} && a hello'
hello world
[STEP 102] #
...