【问题标题】:Unable to put a output into a variable无法将输出放入变量
【发布时间】:2017-07-30 21:39:18
【问题描述】:

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

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

编辑:当我运行这个文件时,我从 echo 中什么也得不到,所以我假设 on 变量的输出有问题。

【问题讨论】:

标签: bash networkmanager


【解决方案1】:
on=$(nmcli networking connectivity)

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

if [ "$on" = "full" ]

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

还要注意,您的输出可能取决于系统语言! 检查此以获取跨语言支持: HERE

【讨论】:

  • 迭代它起作用的原因是因为我在变量和 $(command) 之间使用了空格,因为我相信它会像任何其他语言一样,显然我错了,我不应该留下空格。
  • @FonzTech,您对相等性测试运算符的看法是错误的。 = is POSIX operator,不像==。在bash 中,== 的工作方式与= 相同。另一方面,=/==[/test[[ 中的行为不同。在前一种情况下只匹配相同的字符串,在后一种情况下匹配 glob 模式。
【解决方案2】:

您将需要两个等号,即== 用于完全条件匹配

【讨论】:

  • 那么 echo $on 返回什么?
猜你喜欢
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多