#!/bin/bash
sss='ls -l'
$sss
ttt='a=100'
$ttt
的ls
它输出是正确地,然而,赋值语句将输出错误消息
线5:未发现
为什么命令:a = 100区别?
如果赋值不是命令,它是什么?我的意思是明确的a=100
和a=100
之间的区别扩大变量,我的意思是,bash看到相同的东西a=100
,对不对?为什么他们有不同的解释?
摘要
根据http://guide.bash.academy,一个简单的命令采取的形式
[ var=value ... ] name [ arg ... ] [ redirection ... ]
所以我觉得分配不是命令。根据heemayl的回答,$
扩展和bash运行它作为命令。所以这就是为什么$ttt
发生错误。
嗨,谢谢你的回答。但是我感到困惑,如果分配不是命令,它是什么?我的意思是它仍然不清楚,明确的'a = 100'和'a = 100'之间的区别是从变量扩展而来的,我的意思是,bash看到同样的事情'a = 100',对吧?为什么有不同的解释? – user15964
真的没有区分。 'shell'是shell的别名,内建函数,函数或可执行文件之一,可以通过路径指定,也可以通过'$ PATH'指定的目录列表查找。在你的情况下,'ls'被查找并在'$ PATH'的某个目录中找到,但是,'a = 100'没有被发现。因此,'command not found'错误。 – codeforester
为什么你建议'eval'给新手? – ceving