#!/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