我正在嘗試將 scp 命令的輸出捕獲到 Bash 中的變數或陣列中。我不確定文本來自本地還是遠程?
到目前為止,我已經嘗試了以下方法:
#!/bin/bash -x
mytty=$(tty)
echo "mytty is ${mytty}"
myvar=$(scp test.js [email protected]:/home/crashdog 2>&1 > $mytty)
echo "myvar is ${myvar}"
我可以在我的 tty 上看到如下文本:
test.js 100% 1200 1.2KB/s 00:00
但是 myvar 仍然是空的。所以我的兩個問題,上面的文字來自哪里?以及如何將文本分配給 Bash 中的變數或陣列。
謝謝
uj5u.com熱心網友回復:
您的問題是,scp當它的標準輸出不是終端時,它不會輸出任何東西。
要欺騙它,您可以使用script:
out=$(script -qefc "scp test.js [email protected]:/home/crashdog" /dev/null)
echo "$out"
您可以在如何誘使應用程式認為其標準輸出是終端而不是管道中找到有關它的更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493710.html
下一篇:用jq決議時如何添加單引號?
