Создать сценарий в bash и сохранить его в месте, требующем sudo

jsxt, Zippo

Этот вариант подходит лучше.

String.prototype.format = function() {
    var formatted = this;
    for (var i = 0; i < arguments.length; i++) {
        var regexp = new RegExp('\\{'+i+'\\}', 'gi');
        formatted = formatted.replace(regexp, arguments[i]);
    }
    return formatted;
};

С помощью этой опции я могу заменить строки следующим образом:

'The {0} is dead. Don\'t code {0}. Code {1} that is open source!'.format('ASP', 'PHP');

С вашим кодом вторая {0} не будет заменена. ;)

27
задан D W 10 December 2010 в 18:43
поделиться

1 ответ

Простое размещение sudo перед cat не работает, потому что >$OUTFILE пытается открыть $OUTFILE в текущем процессе оболочки, который не выполняется от имени пользователя root. Вам нужно, чтобы этот файл открылся в подпроцессе sudo.

Вот один способ сделать это:

sudo bash -c "cat >$OUTFILE" <<'EOF'
#!/bin/bash
#? [ ] / \ = + < > : ; " , * | 
#/ ? < > \ : * | ”
#Filename="z:"${$winFn//\//\\}
echo "This is a generated shell script."
App='eval wine "C:\Program Files\foxit\Foxit Reader.exe" "'$winFn'"'
$App
EOF

Это запускает под-оболочку в sudo, открывает $OUTFILE из этого более привилегированного подпроцесса и запускает cat (как еще один привилегированный подпроцесс). Между тем (менее привилегированный) родительский процесс передает документ здесь в подпроцесс sudo.

22
ответ дан 28 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: