1

スクリプトの出力を変数に保存しようとしています。これが私のスクリプト(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

したがって、この出力をシェル変数にストックできない理由がわかりません。QNAP QTS 4.0 で作業しているからでしょうか? しかし、私はそうは思いません。

4

2 に答える 2

0

最初のオプションを使用しました #!/bin/bash printf "Suppression de %s\n" "${1}" >> /share/MD0_DATA/remotesync/delete.log log="$(/share/MD0_DATA/remotesync /remoteSync -rm "${1}" 2>&1)" printf "%s\n" "${log}" >> /share/MD0_DATA/remotesync/delete.log

そしてそれは仕事でもあります。そのため、remoteSync も標準エラーに書き込んでいました。

素早い回答ありがとうございます。

于 2016-05-31T13:33:08.630 に答える
0

たぶんremoteSync、標準エラーにも書いています。

これを試してください:

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

log変数が出力をログ ファイルに追加するためだけに使用されている場合は、次のことを試してください。

#!/bin/bash
printf "Suppression de %s\n" "${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) にリダイレクトするようシェルに指示します。標準エラーも追加されます。

于 2016-05-31T12:52:58.597 に答える