bash scipt 中的 UNC 参数

bash scipt 中的 UNC 参数

我想创建一个带有“纯”UNC(即我不想从字面上转义反斜杠)作为参数的bash脚本,即类似:

./foo \\my\share\is\here

然而,很自然,上面的脚本是这样的:

\我的分享在这里

我可以以某种方式读取确切的 UNC 作为参数并将其存储在变量中吗?

答案1

使用单引号:

[root@xxx601 ~]# ./stack \\my\share\is\here
You Gave Me: \myshareishere
[root@xxx601 ~]# ./stack '\\my\share\is\here'
You Gave Me: \\my\share\is\here

答案2

如果您想在 shell 脚本中运行./foo带有参数的命令,那么您需要使用某种形式\\my\share\is\here引用,因为反斜杠字符具有 shell 的特殊含义。最简单的引用形式是在参数两边加上单引号:一对单引号之间的所有内容都按字面意思处理,唯一不能以这种方式包含的字符是单引号字符本身。

./foo '\\my\share\is\here'

如果您的脚本是foo并且您想在命令行上使用参数运行它\\my\share\is\here,那么您也需要使用引用(命令行是一个 shell)。

如果您输入./foo \\my\share\is\here,则foo无法知道您输入的内容。运行的 shellfoo会解析命令行,并确定后面的空格./foo是单词分隔符,第一个单词是要执行的命令名称,第二个单词是参数,并且字符序列的形式为反斜杠+某物代表角色某物。这和你写的现象是一样的foo ; bar:这是一个要运行的 shell 命令foo,然后bar;它不会将字符串传递; barfoo.类似地,使用参数./foo \\my\share\is\here运行。例如,如果您想使用参数运行,则需要写下您的意思 (或或或任何其他变体)。./foo\myshareishere./foo\\my\share\is\here./foo '\\my\share\is\here'./foo \\\\my\\share\\is\\here./foo '\'"\\m"y\\share'\is\'"here"""

相关内容