我有一个 bash 变量,例如
var=root@283.45.67.89:/root/test
并且想要访问不同的部分(用户、主机、路径,其中用户是可选的)。我试过了:
path=${var#*:*}
user=${var%*@*}
host=${{var#*@*}%*:*}
虽然PATH
and的表达式user
按预期工作(即USER
有 stringroot
和path
有 string /root/test
),但用于获取的表达式host
(即@
符号和:
符号之间的部分)给出了bad substitution
错误。是否有一种简单/优雅的方法可以在一行中修复此表达式,以便提取原始变量的“中间”部分?
附加信息:当没有给出用户时它也必须工作,即在以下没有用户的情况下(并且没有'@'符号),变量user
必须为空,但其他变量必须相应地填充:
var=283.45.67.89:/root/test
我期待以下结果
path=/root/test
host=283.45.67.89
user=