所以,我是脚本新手,我遇到了一些问题。我需要执行的命令是:
read -p Enter_the_DEVICE_Bssid "device1" ;
read -p Enter_the_DEVICE_Bssid "device2" ;
read -p Enter_the_DEVICE_Bssid "device3"
该命令有效,但当我将其设置为变量时,即:
com="read -p Enter_the_DEVICE_Bssid "device1" ;
read -p Enter_the_DEVICE_Bssid "device2" ;
read -p Enter_the_DEVICE_Bssid "device3""
并执行它:$ com它不起作用。可能是因为read命令试图将我的输入设置为变量device1和; 。 关于如何解决它的任何想法?
答案 0 :(得分:3)
您遇到了shell扩展内容的顺序问题。
一个更简单的例子:
$ command='echo one ; echo two'
$ $command
one ; echo two
$command
的值中的分号被视为echo
的参数的一部分,而不是两个echo
命令之间的分隔符。
可能有办法解决这个问题,因此它可以按您想要的方式工作,但为什么要这么麻烦?只需定义一个shell函数。用我的简单例子:
$ command() { echo one ; echo two ; }
$ command
one
two
$
或使用你的:
com() {
read -p "Enter_the_DEVICE_Bssid: " device1
read -p "Enter_the_DEVICE_Bssid: " device2
read -p "Enter_the_DEVICE_Bssid: " device3
}
请注意,我已添加":"在提示结束时。我还删除了不必要的分号和变量名周围的引号(因为参数必须是有效的变量名,它不需要引用)。
答案 1 :(得分:0)
您没有填写报价。
com="read -p Enter_the_DEVICE_Bssid "device1"
报价总是寻找一对而你却错过了。
> com="read -p Enter_the_DEVICE_Bssid: device1"
> $com
Enter_the_DEVICE_Bssid:abc123
> echo $device1
abc123
这里我使用的是bash shell。