我正在编写一个shell脚本,并希望将STDOUT传递给su命令中的文件。输出的文件需要由另一个用户拥有,因此使用su。但是,当要输出的文本和输出文件的名称是变量时,我无法使用su来管道(参见下面的示例)。
我的解决方法是在不使用su的情况下管道到文件,然后将该文件chown给我需要的用户。但是,我想知道是否有一个“单步”方式使用su?
示例(仅供说明):
#!/bin/sh
message="Hello World";
file="/tmp/HelloWorld.txt";
su someuser -c 'echo "${message}" > "${file}"';
如果我将${file}
放在双引号中,就像在此示例中一样,我收到以下错误:
bash: : No such file or directory
如果我删除${file}
周围的双引号,则会收到以下错误:
bash: ${file}: ambiguous redirect
答案 0 :(得分:1)
尝试su someuser -c "echo \"${message}\" > ${file}";
单引号内的变量不会扩展。