【发布时间】:2021-12-31 23:50:04
【问题描述】:
我有一个名为 get-volume.sh 的简单 bash 脚本:
mutedStatus=`amixer -c 0 -D pulse get Master | tail -n 1 | grep -c '\[on\]'`
echo $mutedStatus
if "$mutedStatus" -eq 0; then
echo 'x'
else
echo `amixer get Master | awk -F'[]%[]' '/%/ {if ($7 == "off") { print "MM" } else { print $2 }}' | head -n 1`
fi
exit 0
应该
- 如果未静音则使用 1 填充
mutedStatus变量,如果静音则使用 0 填充 - 如果静音,则回显“x”,否则回显音量
- 退出
但是当我使用bash get-volume.sh 运行脚本时,我收到了这条恼人的消息:
1
get-volume.sh: line 7: 1: command not found
100
为什么会出现这个错误?
它似乎正在尝试执行我的变量,这是 1: 的来源,当我将系统静音时,消息变为
get-volume.sh: line 7: 0: command not found
【问题讨论】:
-
我认为这只是一个简单的语法错误。见acloudguru.com/blog/engineering/…
-
看起来你想通了。顺便说一句,第 3 行的命令是在第 3 行立即调用的,而不是在您似乎指出的那样引用变量时。
-
-eq不是 shell 运算符;这是一个由test命令解释的参数。您实际上是在尝试使用参数-eq和0运行名为1的命令。 -
shell
if语句中的条件是命令,而不是表达式。如果命令成功,则条件为真,如果失败,则条件为假。[是一个特殊的(通常是内置的)命令,用于计算表达式。 -
顺便说一句
#!.bin/bash应该是:#!/bin/bash
标签: bash