这个ksh代码是如何工作的?

时间:2014-02-24 18:58:46

标签: linux redirect stdout ksh aix

echo "Hello" > $XYZ

echo ${?}

如果我在任何.sh文件中复制粘贴这两行,脚本工作正常,没有任何问题。第二行中的${?}返回0. $XYZ可以替换为任意随机字符串。无需定义或初始化变量。

但是,相同的代码对某些用户不起作用。第一行是抛出错误" scriptname.sh[425]: : cannot open"。

第二行中的

${?}返回1.

为什么同一段代码为不同的用户提供不同的结果?

注意:我们在服务器" IBM / AIX RISC System / 6000"

中遇到此问题

3 个答案:

答案 0 :(得分:0)

变量XYZ需要保存非空字符串,以便shell能够解析重定向。如果你希望它默认为没有任何结果,那么可能会将它初始化为/dev/null(这是我想象你可能期望重定向到没有任何东西可以完成;但它没有)。

答案 1 :(得分:0)

确保以正确的形式编写XYZ的赋值语句。 e.g:

XYZ="fileName"
echo "Hello" > $XYZ
...

XYZ =“fileName”没有空格..我不知道,但这是我脑海中唯一的问题

答案 2 :(得分:0)

我认为AIX中的不同用户无法访问日志文件($ XYZ),请尝试将755提供给日志文件目录,并确保您的文件具有足够的权限以便其他人执行(755再次)