Bash
如何確定程序替換的結果是否是文件路徑
如果我這樣做:
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, ...);
要在 Bash 中確定字元串值是否是目前系統上的路徑,請使用
[[ -e "$path" ]]
. 這將檢查路徑是否*存在,*並且不對它指向的文件類型做出任何假設。