프로세스 대체 결과가 파일 경로인지 확인하는 방법

프로세스 대체 결과가 파일 경로인지 확인하는 방법

내가 이렇게 하면:

echo <(cat)

나는 얻다:

/dev/fd/63

그래서 명령줄에는 다음이 있습니다.

myapp -f <(cat)

실행하면 다음 오류가 발생합니다.

-f 플래그 다음에 파일을 전달해야 합니다. 구문 분석된 파일 경로는 "/dev/fd/63"입니다. 파일 시스템에 경로가 존재하지 않는 것 같습니다.

프로세스 교체 결과가 실제 파일인지 확인하는 방법(검증 목적)은 무엇입니까? 이것은 오류를 생성하는 내 bash 코드입니다.

  if [[ -L "$file_path" ]]; then
     file_path="$(readlink "$file_path")";
  fi

  if [[ ! -f "$file_path" ]]; then
    echo "You need to pass a file after the -f flag. The resolved file path was: '$file_path'. This path did not appear to exist on the filesystem".;
    return 1;
  fi

확인 코드를 제거하면 다음과 같은 결과가 나타납니다.

다음 파일을 읽기 위해 열 수 없습니다: /dev/fd/63 EBADF: '/dev/fd/63'을 여는 파일 설명자가 잘못되었습니다.

경로에서 읽는 데 사용하는 node.js 코드는 다음과 같습니다.

const fd = fs.openSync(file_path, 'r');
fs.read(fd, ...);

답변1

Bash에서 문자열 값이 현재 시스템의 경로인지 확인하려면 [[ -e "$path" ]]. 경로가 다음과 같은지 확인합니다.존재하다,그리고 그것이 가리키는 파일 유형에 대해 어떠한 가정도 하지 않습니다.

관련 정보