UBuntu 16.04 Bash 4.4
在4-bash-update.sh第158行:
cd "$drive00" && sudo -H -u myuser bash -c "timeout 2s ./binaryfile -gentoken" > "${save_log_dir}"/update-"${now}".log;
^-- SC2024: sudo doesn't affect redirects. Use ..| sudo tee file
Run Code Online (Sandbox Code Playgroud)
我尝试了几次,每次我的文件被吃掉.
您不需要使用tee,只需将重定向放在执行的命令中bash -c:
sudo -H -u myuser bash -c 'timeout 2s ./binaryfile -gentoken > "$1"' _ "${save_log_dir}/update-${now}.log"
Run Code Online (Sandbox Code Playgroud)
如果您在外部重定向,原始shell将尝试打开该文件,但它没有权限.将它放在bash参数中会在目标用户的shell中以其权限执行它.
的_在命令行是一个虚拟的值$0壳的参数.您需要该占位符才能提供文件名$1.