Linux Bash解释&&;作为论据
注意以下几点Linux Bash解释&&;作为论据,linux,bash,Linux,Bash,注意以下几点 [admin@myVM ~]$ test="echo hello && echo world" [admin@myVM ~]$ $test hello && echo world [admin@myVM ~]$ echo hello && echo world hello world 如果将&&放入bash变量并将其作为命令执行,bash会将&&解释为字符串参数。有人知道如何改变这种行为吗?也就是说,有人知道如何告诉bash“我想执
[admin@myVM ~]$ test="echo hello && echo world"
[admin@myVM ~]$ $test
hello && echo world
[admin@myVM ~]$ echo hello && echo world
hello
world
如果将&&放入bash变量并将其作为命令执行,bash会将&&解释为字符串参数。有人知道如何改变这种行为吗?也就是说,有人知道如何告诉bash“我想执行双安培” 变量不是用来存储脚本的。将代码存储在函数中,而不是变量中
$ test() { echo hello && echo world; }
$ test
hello
world
$test
不起作用的原因是,不带引号的变量扩展只接受bash的许多解析阶段中的两个:
$test
分割成单独的单词,这就是它识别echo
命令的原因。它还将扩展通配符,即globs。不过,这是解析过程中仅有的两个部分。它不寻找像&&
、|
或这样的符号代码>
我不推荐使用它,但您可以让bash使用bash-c“$test”
或eval“$test”
执行字符串。这些都是你应该避免的坏习惯,除非绝对必要。函数比使用eval
的黑客要好得多,并且它们不会通过允许任意代码执行而打开潜在的安全漏洞