繁体   English   中英

bash:命令替换:语法错误,出现在意外标记“ |”附近

[英]bash: command substitution:syntax error near unexpected token `|'

我正在使用一个简单的命令通过使用Java Jsch代码来更改远程linux计算机中用户的密码。 我的命令是

command = "echo -ne "+userPassword+" \n echo "+userPassword+" \n | smbpasswd -a -s "+userId;
((ChannelExec)channel).setPty(true);
((ChannelExec)channel).setCommand("sudo -S -p '' "+command);

但这是返回错误信息,

 bash: command substitution: line 2: syntax error near unexpected token `|' bash: command substitution: line 2: ` | smbpasswd -a -s TestUserNew' sudo: JX7MuQoTJX7MuQoT: command not found 

我在这里感到困惑,因为此命令在Linux中运行。 有人可以帮我解决这个问题吗?

谢谢古拉卜

此命令在命令行上有效:

(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester

请注意, sudo用于smbpasswd命令。 此外,第一部分周围的括号创建了一个子壳,这似乎很重要。

我已经解决了问题。

原始代码是

command = "echo -ne \\""+userPassword+"\\n"+userPassword+"\\n | sudo smbpasswd -a -s "+userId;

更新的代码是

command = "echo -ne \\""+userPassword+"\\n"+userPassword+"\\n\\" | sudo smbpasswd -a -s "+userId;

谢谢大家,我有很多线索可以解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM