Bash shell 扩展给出命令未找到

Bash shell expansion gives command not found

我对 bash 脚本编写还很陌生 我对它能做的一切感到惊讶。我遇到了困难,尝试了多种不同的组合来让它工作,但似乎无法实现。

任何想法/提示/答案将不胜感激!

问题:我有一个文件作为 ldapsearch 脚本的一部分被删除,它包含 sAMAccountName 和邮件属性。这些在不同的行上,我想: 1) 获取一个 grep 文件 (grep -E "sAMAccountName|mail") 这会每行生成一个条目并将其输出为 ,然后我将其提供给 postmap 哈希:/etc/postfix/canonical (ftw).

不过!我的世界统治计划被推迟了,因为我将命令执行的输出分配给 $stuff 的声明找不到命令...grrr。请各位互联网bash 大牛们指出我的错误! 注意 并未包含所有代码,仅包含给我带来麻烦的部分: 参考 1:Bash regex if statement

#############################
#!/bin/bash
while read line; do

if [[ $line =~ ^sAM ]]; then
 stuff = $( echo "$line" | cut -d\: -f2) #<-- command not found
 echo -n $stuff >> /etc/postfix/tmp-canonical

fi

if [[ $line =~ ^mail ]]; then
 stuff = $( echo "$line" | cut -d\: -f2) #<-- command not found
 echo -n "<tab>$stuff\n" >> /etc/postfix/tmp-canonical

fi

done < ""
#end

stuff 被解释为命令而不是变量赋值,因为等号前有 space。删除 space 它应该可以工作。

stuff=$( echo "$line" | cut -d\: -f2)

找到了!我只是还不够努力!好的,这是我修复它的方法:

代码片段(更正)

STUFF=$(echo "$line" | cut -d\: -f2)

原文-

STUFF = $(echo "$line" | cut -d\: -f2)

STUFF和“=”之间的space正在被解释,找到这篇文章:How to set a variable to the output from a command in Bash?