/ / shell scripting echo не працює всередині sudo - bash, shell, scripting, sh

shell scripting echo не працює всередині sudo - bash, shell, scripting, sh

У мене є сценарій оболонки test.sh як далі нижче.

sudo -H sh -c "
echo $1;
"

Але поки я виконую цей сценарій як ./test.sh abcd це не ехо нічого. Потім я змінив свій сценарій, як зазначено нижче.

sudo -H sh -c "
echo $1;
"

Але тепер він відображає вихід як $1. Яку модифікацію мені потрібно зробити, щоб отримати вихід як abcd. Будь ласка, порадьте, оскільки я дуже початківець у сценаріях оболонки.

Дякую.

Відповіді:

1 для відповіді № 1

Спробуйте:

sudo -H sh -c "
echo "$1";
" argv0 "$1"

Від bash сторінка людини:

man bash | less -Ip "-c string"

# -c string If the -c option is present,  then  commands  are  read  from
# string.   If  there  are arguments after the string, they are
# assigned to the positional parameters, starting with $0.

2 для відповіді № 2

Спробуйте це:

sudo -H sh -c "
echo $1;
"

sudo запускає команду в новій оболонці, яка не знає нічого про аргумент, переданий її батькові, тому вам потрібно розгорнути їх перед запуском рядка команд у новій (підпорядкованій) оболонці.