以下 Bash 脚本有什么问题?

以下 Bash 脚本有什么问题?

我在脚本中写了以下行,但它没有为变量 a 分配任何值

a= grep -n mark /etc/samba/smb.conf |cut -d: f1

我注意到 smb.conf 中变量 a 中存在标记字符串的行号。但变量值为空。可能是什么问题

答案1

两件事情:

  1. 变量名、信号=和变量值之间不能有空格
  2. 如果要将命令或一系列命令的结果放在变量中,则必须将其括在$(command)或旧式反引号中。下面两行都是正确的,并且执行相同的操作:

    a=`commands`
    a=$(commands)
    

所以你的路线必须是

a=$(grep -n mark /etc/samba/smb.conf |cut -d: f1)

关于如何使用反引号或新样式进行连接存在一些差异$(),请检查这个问题看到良好的反响。

答案2

a=`grep -n mark /etc/samba/smb.conf |cut -d: -f1`

答案3

尝试一下

a=$(grep -n mark /etc/samba/smb.conf |cut -d: f1)

或者,您可以使用反引号代替 $()(这可以使代码看起来更美观)

答案4

也许可以尝试像这样使用 cut:

a=`grep -n mark /etc/samba/smb.conf |cut -d: -f1`

相关内容