2014-12-15 2 views
2

Я пишу сценарий bash с дротиком.Создайте и напишите файл, имеющий разрешение «выполнить»?

Ниже код создает файл. но этот файл не имеет разрешения «выполнить». , поэтому я не могу выполнить, выполнив ./ex.sh.

new File('ex.sh').writeAsStringSync(script_str); 

Может быть, мне нужно установить FileStat в файл. но я не могу найти какие-либо API.

+0

https://code.google.com/p/dart/issues/detail?id=15078 В работе вокруг в то же время вы можете просто запустить CHMOD через [Process.run()] (HTTPS: //api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:io.Process#id_run). –

+0

@GregLowe Да. в настоящее время эта функция еще не реализована. Я попробую Process.run(). Спасибо! –

+0

Добро пожаловать;) –

ответ

2

Не пробовал, но что если вы попробуете:

new File('ex.sh').writeAsString(script_str).then((final File file) { 
    return file.stat().then((final FileStat stat) => stat.mode = 777); 
}); 
+0

Благодарим за ответ. но, к сожалению, «режим» является конечной переменной. Кажется, нет никакой установки для установки 'FileStat' :(https://github.com/dart-lang/bleeding_edge/blob/7cf5e8497e1cdad03213f8d46b6c99582fbb7eb1/dart/sdk/lib/io/file_impl.dart –

+1

@SunggukLim вы можете создать собственное расширение https : //www.dartlang.org/articles/native-extensions-for-standalone-dart-vm/ – JAre

1

Кажется, эта функция еще не реализована. См. Код.google.com/p/dart/issues/detail?id=15078

Как обходной путь, просто выполнил функцию полезности для запуска команды chmod.

void _runBashCommandSync(GrinderContext context, String command, {String cwd, bool log: true}) { 
    context.log(command); 
    ProcessResult result = 
    Process.runSync('/bin/bash', ['-c', command], workingDirectory: cwd); 
    if (!log) return; 
    if (result.stdout.isNotEmpty) { 
    context.log(result.stdout); 
    } 
    if (result.stderr.isNotEmpty) { 
    context.log(result.stderr); 
    } 
    if (result.exitCode > 0) { 
    context.fail("exit code ${result.exitCode}"); 
    } 
} 
_runBashCommandSync(context, 'chmod 777 ex.sh'); 
Смежные вопросы