2017-10-18 9 views
1

CSI 스크립트에서 스크립트의 경로를 얻는 가장 좋은 방법은 무엇입니까? 내 스크립트를 다른 디렉토리에서 실행중인 스크립트에서 #load ed로 만들 수 있고 여전히 자신의 디렉토리에 대한 액세스 권한을 얻고 작업 디렉토리의 영향을받지 않도록하고 싶습니다. nodejs의 __dirname 상수 in the docs과 같은 것을 찾을 수 없습니다.CSI에서 현재 실행중인 스크립트의 경로 또는 디렉토리를 얻으려면 어떻게해야합니까?

답변

1

현재 현재 실행중인 스크립트의 디렉토리를 파악하는 가장 좋은 방법은 매우 장황합니다. 이 궁금 일부 바로 가기/내장 I에 대해 알고 있지만, 간다하지 않는 것이 :

GetMineDirectory.csx :

#!/usr/bin/env csi 

using System; 
using System.IO; 
using System.Runtime.CompilerServices; 

static string GetMyPath(
    [CallerFilePath] string path = "") 
    => path; 

// Do not write in terms of GetMyPath() in case we are called from another script. 
static string GetMyDirectory(
    [CallerFilePath] string path = "") 
    => Path.GetDirectoryName(path); 

Console.WriteLine($"My full path is {GetMyPath()}"); 

Console.WriteLine($"My directory is {GetMyDirectory()}");