我有以下示例。
#!/bin/bash
ARGUMENTS="-executors 1 -description \"The Host\" "
# call1
# error: parameter Host" is not allowed
java -jar swarm-client.jar $ARGUMENTS
# call2
# works fine with eval
eval java -jar swarm-client.jar $ARGUMENTS
Run Code Online (Sandbox Code Playgroud)
在$ARGUMENTS
,我有一个引用的论点。我不明白为什么通过转义引号对参数进行分组在call1
. 我不明白为什么有eval
必要解决引用问题。
我想我不明白shell中命令评估的过程和顺序。你能给我解释一下吗?
我尝试在 RedHat 中使用/etc/environment
.
它清除了我的PATH
变量;之后没有识别出任何命令。
为什么会发生这种情况,因为只需在 shell 中执行相同的命令就可以正常工作?!
我的内容/etc/environment
:
ORACLE_HOME=/usr/lib/oracle/12.1/client64
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
Run Code Online (Sandbox Code Playgroud)