簡體   English   中英

無法在 for 循環中運行來自 bash 腳本的命令

[英]Can't run commands from bash script in for-loop

我正在嘗試創建一個 bash 腳本,該腳本讀取文件夾中的子文件夾並將子文件夾用作 python 程序的輸入,但由於某種原因,它無法識別一些簡單的命令。

因此,作為參考,我的 python 程序接受兩個輸入:它所接受的子文件夾(文件夾中必須只有文件)和 output 文件名。

#!/bin/bash

PATH=/foo/bar/*
for folder in $PATH; do
        echo  "${folder##*/}"
        (cat "${folder##*/}" output.txt) | python3 program.py
done

我已經在命令行中單獨運行了該程序,並且它已經運行了很多次,但由於某種原因,它沒有。

這是生成的 output:

$ bash fileread.sh
> File1
> fileread.sh: line 6: cat: command not found
> fileread.sh: line 6: python3: command not found
> File2
> fileread.sh: line 6: cat: command not found
> fileread.sh: line 6: python3: command not found

顯然, echo命令有效,但不知何故其他兩個停止工作

PATH是一個保留變量。 通過將其用於您自己的目的,bash 再也找不到命令了。 只需使用不同的名稱。

此外,如果你想存儲一個列表,IMO 使用數組更有意義:

p=(/foo/bar/*)
for folder in "${p[@]}"
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM