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
的变量的引用,因为
'
是变量名中的有效字符。