2017-07-30 53 views
0

当我将一个命令的输出放入一个变量时,目前我遇到了极大的困难。我只是不知道我做错了什么。无法将输出放入一个变量

#! /bin/bash 
on = $(nmcli networking connectivity) 
echo "$on" 
if [ "$on" = "full" ] 
then 
    nmcli networking off 
else 
    nmcli networking on 
fi 

编辑:当我运行这个文件时,我从回声中得不到任何东西,所以我认为它是出错的on变量的输出。

+0

可能的复制[Bash中变量赋值命令未找到错误(https://stackoverflow.com/questions/2268104/command-not-found-error-in- bash-variable-assignment) – codeforester

回答

0
on=$(nmcli networking connectivity) 

创建和初始化变量时,不必在“equal”符号之前和之后放置空格。

if [ "$on" = "full" ] 

对字符串的相等比较必须用双等于写:==

另外要注意,你的输出可以依赖于系统的语言! 检查这个跨语言支持:中 HERE

+0

这很有用,谢谢。 – alphaomega325

+0

迭代它工作的原因是因为我在变量和$(command)之间使用了空格,认为它会像其他语言一样,显然我错了,我不应该留下空格。 – alphaomega325

+0

@FonzTech,你对平等测试运营商是错误的。 ['='是POSIX运算符](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html),与'=='不同。在'bash'中,'=='与'='完全相同。另一方面''''/'=='在'['/'test'和'[['。在前一种情况下只匹配相同的字符串,并在后面的情况下匹配glob模式。 – randomir

0

您将需要两个等号I.e. ==对于精确的条件匹配

+0

不行不行。 – alphaomega325

+0

那么echo $返回的是什么? –

+0

错误。看到我对接受的答案的评论。 – randomir