Bash - 命令未找到,但仍然有效

pez*_*tem 2 bash

我为音量修改编写了这样的代码:

#!/bin/bash

case "$1" in
        down)
            $(amixer -c 0 sset Speaker  5%-)
            $(amixer -D pulse sset Master 5%-)  
            ;;  
        up)
            $(amixer -c 0 sset Speaker  5%+)
            $(amixer -D pulse sset Master 5%+)
            ;;
        mute)
            $(amixer -c 0 sset Speaker  0)
            $(amixer -D pulse sset Master 0)
            ;;
        *)
            echo $"Usage: $0 {down|up|mute}"
            exit 1
esac
Run Code Online (Sandbox Code Playgroud)

那么代码工作正常,但是当我在终端中执行它时,我得到了以下信息:

[akfaz@localhost utils]$ ./audioControl.sh up
./audioControl.sh: line 9: Simple: command not found
./audioControl.sh: line 10: Simple: command not found
Run Code Online (Sandbox Code Playgroud)

你知道发生了什么吗?

Gil*_*not 6

您必须删除所有命令替换:$( ),不需要它们.

当你必须在里面返回命令的结果时需要它,比如在输入变量时:

var=$(echo "ok")
Run Code Online (Sandbox Code Playgroud)

请参见http://mywiki.wooledge.org/BashFAQ/002http://mywiki.wooledge.org/CommandSubstitution

  • 您可能想要添加一个解释,例如"命令的输出似乎是'未使用简单值'(或任何以'Simple'开头的文本),因此'Simple'被视为要执行的命令,因此错误信息." (2认同)