У мене є сценарій оболонки 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
запускає команду в новій оболонці, яка не знає нічого про аргумент, переданий її батькові, тому вам потрібно розгорнути їх перед запуском рядка команд у новій (підпорядкованій) оболонці.