【问题标题】:Bash shell expansion gives command not foundBash shell 扩展给出命令未找到
【发布时间】:2017-12-11 22:49:23
【问题描述】:

我对 bash 脚本很陌生,我对它所能做的一切感到惊讶。我碰壁了,尝试了许多不同的组合来让它工作,但似乎无法做到。

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

问题:我有一个文件作为 ldapsearch 脚本的一部分被删除,它包含 sAMAccountName 和邮件属性。这些是分开的,我想: 1) 获取一个 grep 文件 (grep -E "sAMAccountName|mail"),每行生成一个条目并将其输出为 ,然后我将其提供给 postmap hash:/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 < "$1"
#end

【问题讨论】:

    标签: bash shell command pipe expansion


    【解决方案1】:

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

    code sn-p(修正后的)

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

    原来的——

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢!感谢您的帮助!我看到你的答案出现在我发布我的:) 愚蠢的空间:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      相关资源
      最近更新 更多