我试图运行一个脚本,应该添加此路由到表11:
ip route add local 10.1.3.212 dev eth1 proto kernel scope host src 10.1.3.212 table 11
如果我手动运行这个命令,它是成功的,我可以看到表11中的条目,但是如果我运行脚本,执行以下操作:
if [[ ${IP_ROUTE} == local* ]]; then ip route add ${IP_ROUTE} table ${NEW_INTERFACE_TABLE} 2>>/home/ec2-user/script_output fi
$ {NEW_INTERFACE_TABLE}是11,脚本会抛出这个错误:
Error: an inet prefix is expected rather than "local 10.1.3.212 dev eth1 proto kernel scope host src 10.1.3.212 ".
请帮忙,我疯了。
问题是展开${IP_ROUTE}
,文本被解释为单个参数而不是一系列参数。 这应该发生,如果variables是引用,而不是这样,所以不应该这样做。
有些事情要检查:
IFS
内容(您可以在脚本set | grep -E '^IFS'
内运行set | grep -E '^IFS'
)。 你应该得到像IFS=$' \t\n'
这是一个通常的默认值。 请注意,空格字符被列为字段分隔符( IFS
variables仅包含该字符)。 #!/bin/bash
而不是#!/bin/sh
。 IP_ROUTE
variables?