我有一个unix shell脚本,它使用stdout和stderr重定向到日志文件。例如test.sh
:
ls -l &>> test.log
我的问题是,当我使用sudo
:
sudo ./test.sh
&
被解释为“在后台运行”。
有什么建议吗?
答案 0 :(得分:4)
我想,你的脚本test.sh
在第一行没有像这样的shebang:
#!/bin/bash
如果没有此行,则有几个环境设置会影响脚本的执行方式。在您的情况下,这意味着由于root用户的设置,将使用ash
,ksh
,dash
或其他任何shell来执行脚本。
答案 1 :(得分:3)
test.sh中的hash-bang行是什么?确保指定支持该语法的shell。实际上我不确定是什么shell - 既不是sh,bash,也不是ksh,也不是csh有&>>
重定向运算符 - 但无论如何你都需要明确指定它:
#!/bin/fancysh
或者,使用更便携的语法。
#!/bin/sh
ls -l >> test.log 2>&1
答案 2 :(得分:1)
你试过这样跑:
ls -l >> test.log 2>&1
答案 3 :(得分:0)
问题是脚本没有shebang行
#!/bin/bash
我应该发现它......
答案 4 :(得分:-1)
请将重定向的顺序更改为
ls -l >>& test.log