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?
我对 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?