我有一個輸入檔案目錄,我想使用 shell 腳本在控制臺上執行這些檔案,然后在新的輸出目錄中創建輸出檔案。
#!/bin/bash
FILES="inputs/*.txt"
for f in $FILES
do
basename=${f%.*}
java main accounts.txt rentalunits.txt
cat "$f"
done >> $basename.out
我嘗試使用運行此代碼
sh testscript
對于兩個文本檔案,但它只創建一個輸出檔案并卡在 java 程式中的第一個掃描儀上。
uj5u.com熱心網友回復:
只是猜測
#!/bin/bash
FILES="inputs/*.txt"
for f in $FILES
do
basename=${f%.*}
java main accounts.txt rentalunits.txt < "$f" > "$basename.out"
done
此外,無需指定解釋器,因為您有 shebang
chmod x testscript
./testcript
uj5u.com熱心網友回復:
您已經得到了答案,但是回圈遍歷 glob 模式檔案的正確方法是:
for f in inputs/*.txt; do ...
即不要將模式放入變數中:它會迫使您不參考變數,這可能會產生意想不到的后果。
如果要使用變數,請在 bash 中使用陣列:
files=( inputs/*.txt )
for f in "${files[@]}"; do ...
現在,由于特定于 bash 的功能,您必須使用bash ./testscriptnotsh
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/448359.html
