Shell中的变量字符串连接(sh)?
我想写一个小脚本,它使用存储在变量中的路径。假设路径是Shell中的变量字符串连接(sh)?,sh,Sh,我想写一个小脚本,它使用存储在变量中的路径。假设路径是foo/bar/ 如果我将变量path设置为foo/bar/,如何使用它并在其后附加一些字符串?如果我想输出foo/bar/baz,我不能只执行echo$pathbaz,因为它查找一个不存在的变量pathbaz 如果我从变量中删除尾随斜杠并将path设置为foo/bar,那么我就可以执行echo$path/baz并正确获得foo/bar/baz然而,这是唯一的方法吗?我可以在变量中保留斜杠吗? 下面是直接从sh获得的输出: # path=fo
foo/bar/
如果我将变量path
设置为foo/bar/
,如何使用它并在其后附加一些字符串?如果我想输出foo/bar/baz
,我不能只执行echo$pathbaz
,因为它查找一个不存在的变量pathbaz
如果我从变量中删除尾随斜杠并将path
设置为foo/bar
,那么我就可以执行echo$path/baz
并正确获得foo/bar/baz
然而,这是唯一的方法吗?我可以在变量中保留斜杠吗?
下面是直接从sh
获得的输出:
# path=foo/bar/
# echo $pathbaz
# path=foo/bar
# echo $path/baz
foo/bar/baz
# exit
只需将变量用花括号括起来:
# path=foo/bar/
# echo ${path}baz
foo/bar/baz
# exit
echo${path}/baz
是唯一合理的选择。祝你好运。有点难看,但仍然正确:echo“$path”“baz”
。同样正确的printf“%s%s”“$path”“baz”
。我发现你可以简单地将变量用花括号括起来,就像这样${path}baz
@HristiyanDodov--以确保你清楚自己在做什么,这是你需要${var}的唯一原因
用于明确定义变量的边界。不需要使用$path/baz
,因为'/'
不能是变量名的一部分。但是,如果您希望通过''
分隔,则需要使用大括号,例如${path}u baz
,否则shell将尝试取消对名为path_baz
的变量的引用,因为'
是变量名中的有效字符。