我正在创建一个类似命令提示符的shell(它没有完成),但它不起作用。这是:
#!/bin/bash
VER=$(lsb_release -sr)
OS=$(lsb_release -si)
echo "Linux [Distro $OS Version $VER]"
echo "<c> None"
echo -n "${PWD}>"
read $cmd
eval $cmd
我在Crunchbang上运行。 当我运行它时:
crunchbang@crunchbang:~$ ./cmd.sh
Linux [Distro Debian Version 7.0]
/home/crunchbang>echo "abc"
crunchbang@crunchbang:~$
应该是什么:
crunchbang@crunchbang:~$ ./cmd.sh
Linux [Distro Debian Version 7.0]
/home/crunchbang>echo "abc"
abc
crunchbang@crunchbang:~$
更好:
crunchbang@crunchbang:~$ ./cmd.sh
Linux [Distro Crunchbang Version 11]
/home/crunchbang>echo "abc"
abc
crunchbang@crunchbang:~$
答案 0 :(得分:2)
read $cmd
不正确。你的意思是read cmd
。
您只能使用$
来引用变量,而不是名称。
您的输入可能会以$REPLY
结尾。
答案 1 :(得分:1)
你需要从读取线上取下$
read cmd
Bash正在将变量扩展为空,并执行“read”