脚本的库存输出在 bash 变量 (QNAP QTS 4.0)



我正在尝试将脚本的输出存储在变量中。这是我的脚本(delete.sh)的代码:

#!/bin/bash
echo "Suppression de $1" >> /share/MD0_DATA/remotesync/delete.log
log=$(/share/MD0_DATA/remotesync/remoteSync -rm "$1")
echo $log >> /share/MD0_DATA/remotesync/delete.log̀

当我执行这个脚本时,我在输出中得到了它:

[/share/MD0_DATA/.qpkg/remotesync] # soft/delete.sh "archivesPAO/3MONTAGE BORNE OZ 275x155.psd"
drivers : ("QMYSQL3", "QMYSQL", "QSQLITE")
Table hubicobject & hubicobjectLocal sucessfully reseted
Load container Object
" ATTENTION recuperation du prefix : archivesPAO/3MONTAGE BORNE OZ 275x155.psd"
Credentials
Refresh Token
"Upload  : 100% 0.00 octets/s fin dans : 00:00:00"
"Download  : 100% 0.00 octets/s fin dans : 00:00:00"
"Download  : 100% 0.00 octets/s fin dans : 00:00:00"
"https://lb9911.hubic.ovh.net/v1/AUTH_f5cb82ec59a615a1c56053608e0c6123"
"Download  : 100% 0.00 octets/s fin dans : 00:00:00"
"Download  : 100% 0.00 octets/s fin dans : 00:00:00"
"Temps pour inserrer 10000 entree : 0 ms"
[/share/MD0_DATA/.qpkg/remotesync] # cat soft/delete.log 
Suppression de archivesPAO/3MONTAGE BORNE OZ 275x155.psd

所以我不明白为什么我不能在我的 shell 变量中存储此输出。也许是因为我在 QNAP QTS 4.0 上工作?但我不这么认为。

也许remoteSync也在写入标准错误。

试试这个:

#!/bin/bash
printf "Suppression de %sn" "${1}" >> /share/MD0_DATA/remotesync/delete.log
log="$(/share/MD0_DATA/remotesync/remoteSync -rm "${1}" 2>&1)"
printf "%sn" "${log}" >> /share/MD0_DATA/remotesync/delete.log

如果 log 变量仅用于将输出追加到日志文件,请尝试以下操作:

#!/bin/bash
printf "Suppression de %sn" "${1}" >> /share/MD0_DATA/remotesync/delete.log
/share/MD0_DATA/remotesync/remoteSync -rm "${1}" >> /share/MD0_DATA/remotesync/delete.log 2>&1

标准输出和标准误差都附加到delete.log文件中,这要归功于 >> ... 2>&1

>> ...命令的标准输出追加到文件中。

2>&1指示命令行管理程序将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1)。还会附加标准误差。

我使用了第一个选项 #!/bin/bash printf "Suppression de %s" "${1}">>/share/MD0_DATA/remotesync/delete.log log="$(/share/MD0_DATA/remotesync/remoteSync -rm "${1}" 2>&1)" printf "%s" "${log}">>/share/MD0_DATA/remotesync/delete.log

这也是工作。所以远程同步也写入了标准错误。

感谢您的快速回答。

相关内容

  • 没有找到相关文章

最新更新