Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        2年前关闭。
                                                                                            
                
        
这是我的代码:

CONFIG= ifconfig lo;
MAC_ADDRESS="$("${CONFIG}" | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";
MAC_ADDRESS2="$("${CONFIG}" | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";

echo "$MAC_ADDRESS"
echo "$MAC_ADDRESS2"


在这里,我试图将ifconfig lo设置为单个变量,并尝试传递到需要它的另一个变量。

所以我的期望是,它应该像下面这样通过

MAC_ADDRESS="$(ifconfig lo | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";
MAC_ADDRESS2="$(ifconfig lo | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";


在这里,我得到许可被拒绝的异常。还有其他可能的方法吗?

预期产量:

JUKUJSDJDJSJDJSJ
KIIPPSKKSKDKDKKS

最佳答案

注意:此答案假定为bash。其他外壳具有不同的行为。



如果您尝试类似的操作:

bash-4.2$ command="ls"
bash-4.2$ $command
bash-4.2$ "$command"


然后,您会注意到在两种情况下都执行ls。但是,如果尝试以下操作:

bash-4.2$ command="ls -l"
bash-4.2$ $command


将按预期工作(在zsh中失败),但是如果引用

bash-4.2$ "$command"
bash: ls -l: command not found


它失败。

您尝试执行类似的操作,但是在命令替换$(command)中引用了该命令。

简而言之:不要

CONFIG= ifconfig lo;
MAC_ADDRESS="$("${CONFIG}" | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";


但是做

CONFIG="ifconfig lo"
MAC_ADDRESS="$(${CONFIG} | awk '/HWaddr/ {print $NF}' | sed -e 's/://g')";


我还修复了您对CONFIG的定义,因为它需要,并且-符号(=)前后不允许有空格。

关于linux - IFCONFIG值未传递到 shell 中的另一个变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52778285/

10-12 17:10