在作为sudo运行的linux shell脚本中使用重定向

时间:2011-10-31 10:59:34

标签: linux shell

我有一个unix shell脚本,它使用stdout和stderr重定向到日志文件。例如test.sh

ls -l &>> test.log

我的问题是,当我使用sudo

运行脚本时
sudo ./test.sh

&被解释为“在后台运行”。

有什么建议吗?

5 个答案:

答案 0 :(得分:4)

我想,你的脚本test.sh在第一行没有像这样的shebang:

#!/bin/bash

如果没有此行,则有几个环境设置会影响脚本的执行方式。在您的情况下,这意味着由于root用户的设置,将使用ashkshdash或其他任何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