Bash:制作我自己的shell

时间:2014-10-28 19:08:42

标签: bash shell command-prompt

我正在创建一个类似命令提示符的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:~$

2 个答案:

答案 0 :(得分:2)

read $cmd不正确。你的意思是read cmd

您只能使用$来引用变量,而不是名称。

您的输入可能会以$REPLY结尾。

答案 1 :(得分:1)

你需要从读取线上取下$

read cmd

Bash正在将变量扩展为空,并执行“read”