在一行Bash脚本中设置变量

在一行Bash脚本中设置变量,bash,case,Bash,Case,正在寻找一种在bash one liner中设置变量的方法,即脚本,例如: export class={read -p "What Is Your Profession?" a; case $a in "Theif") echo "Stealth" ; in "Cleric") echo "Heals?" ; "Monk") echo "Focus?" ; *) echo "invalid choice" a; esac} 尽管我在运行这个命令时没有将其设置为一行时遇到问题,但我已经尝试了很多

正在寻找一种在bash one liner中设置变量的方法,即脚本,例如:

export class={read -p "What Is Your Profession?" a; case $a in "Theif") echo "Stealth" ; in "Cleric") echo "Heals?" ; "Monk") echo "Focus?" ; *) echo "invalid choice" a; esac}
尽管我在运行这个命令时没有将其设置为一行时遇到问题,但我已经尝试了很多方法,但都没有得到任何结果。在我眼里,上面的描述是最清晰的。我还尝试了
VAR=,

这个案子本身给了我一个机会

-jailshell: syntax error near unexpected token `('

每当我用一个以上的案例运行它时。我知道这可能是一堆乱七八糟的东西。

这里有一行你可以用:

export class=`{ read -p "What Is Your Profession? " a; case $a in "Theif") echo "Stealth";; "Cleric") echo "Heals?";; "Monk") echo "Focus?";; *) echo "invalid choice" a;; esac; }`
或者更好,您可以将其放入函数中:

function readclass() { read -p "What Is Your Profession? " a; case $a in "Theif") echo "Stealth";; "Cleric") echo "Heals?";; "Monk") echo "Focus?";; *) echo "invalid choice" a;; esac; }
然后使用它:

export class=$(readclass)

您需要双分号
分隔
case
语句的子句,无论是一行还是多行。您还必须小心使用
{…}
,因为它用于I/O重定向。此外,
{
}
都必须是命令开头的标记;
{
后面必须有空格(或换行符),
}
前面必须有分号(或符号或换行符)。即使更改了该值,赋值也不会执行大括号之间的代码。为此,可以使用命令替换:

export class=$(read -p "What Is Your Profession?" a; case $a in "Theif") echo "Stealth" ;; "Cleric") echo "Heals?" ;; "Monk") echo "Focus?" ;; *) echo "invalid choice $a";; esac)

最后,您还没有对“小偷”进行拼写检查。

这里有几个问题。首先,在
=
后面需要一个字符串,大括号不是字符串分隔符。尝试使用单引号,如
var='long complex命令'
。接下来,您不需要将命令分配给变量。你为什么这么做?啊+如果
,则为1<代码>;)