Linux
如何使用 shell 腳本讀取文件並寫入另一個文件
我有一個看起來像這樣的文件(file1.txt)
258.2222
我必須將此
file1.txt
值寫入另一個文件。如果沒有值(空),file1.txt
那麼它應該列印為“通過”。這就是我嘗試過的
for final in $(cat file1.txt);do if [ "$final" ];then echo $final > file2.txt else echo "Passed" > file2.txt fi done
這僅適用於 1 種情況。如果其中沒有值,
file1.txt
則它不會寫為**“通過”**預期輸出:
如果有一個值
file1.txt
:258.2222
如果沒有值(空)
file1.txt
:Passed
有人可以幫我解決這個問題嗎?提前致謝!
注意:我不允許使用通用腳本語言(JavaScript、Python 等)。
它不起作用的原因是
for
循環。當文件中沒有任何值時,for
循環沒有任何內容可以迭代,因此它甚至不會啟動,因此if
永遠不會評估。但是,由於文件中只能有一行,因此無論如何循環都沒有意義。只需執行以下操作:final=$(cat file1.txt) if [ -n "$final" ]; then printf '%s\n' "$final" else printf 'Passed\n' fi
然後,執行腳本並將其輸出重定向到文件(硬編碼輸出文件名通常是不好的做法,因為這可能會導致無意中覆蓋任何具有相同名稱的現有文件,並且還會限制腳本的使用方式):
script.sh > file2.txt
請注意,如果文件只有空格,這也會列印出來,因為那是“某物”而不是“無”。