所以,我是脚本新手,遇到了一些问题。我需要执行的命令是:
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 它不起作用。可能是因为读取命令试图将我的输入设置为变量 device1 和 ; . 关于如何修复它的任何想法?
最佳答案
您遇到了 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
}
请注意,我在提示末尾添加了“:”。我还删除了变量名周围不必要的分号和引号(因为参数必须是有效的变量名,所以不需要用引号引起来)。
关于Linux shell 脚本 "read"命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28244793/