Bash 脚本中的 Appcmd 将反斜杠替换为正斜杠,如何防止?
Appcmd from Bash script replacing backslashes with forward slashes, how to prevent?
我正在尝试 运行 调用 appcmd
的 Bash
脚本将站点添加到 IIS。
#!/bin/bash
windir=c:\windows
domain=""
path=""
#also tried using forward slashes by replacing backslashes
#physicalPath=`echo "$path" | sed 's/\\/\//g'`
#add site
$windir\syswow64\inetsrv\appcmd add site /name:$domain /physicalpath:$path
我调用脚本使用:
script.sh mydomain.com c:\mypath
但是,当我检查 IIS 时,站点的物理路径 属性 是使用 正斜杠 而不是反斜杠设置的。
我做错了什么?
来自 https://technet.microsoft.com/en-us/library/cc725781%28v=ws.10%29.aspx 的以下数据是否有帮助?
要更改应用程序内容的路径,请使用以下语法:
appcmd set app /app.name: string /[path='/'].physicalPath: string
变量app.namestring是应用程序的虚拟路径,physicalPathstring是应用程序内容的物理路径。
例如,要为名为 contoso 的站点中名为 marketing 的应用程序更改位置 c:\application 的物理路径,请在命令提示符下键入以下内容,然后按 ENTER:
appcmd set app /app.name: contoso / marketing /[path='/'].physicalPath:c:\ application
有关 Appcmd.exe 的详细信息,请参阅 Appcmd.exe (IIS 7)。
反斜杠用于防止对某些字符进行特殊处理:
$ z=foo
$ echo "$z"
foo
$ echo "$z"
$z
因此,您需要自己转义反斜杠才能按字面意思使用它们。 shell 将每一对 \
视为单个文字 \
.
windir=c:\\windows
domain=""
path=""
#add site
"$windir"\\syswow64\\inetsrv\\appcmd add site /name:"$domain" /physicalpath:"$path"
但是,更简单的转义方法是将它们包含在单引号中。
windir='c:\windows'
domain=""
path=""
#add site
"$windir"'\syswow64\inetsrv\appcmd' add site /name:"$domain" /physicalpath:"$path"
(也可以使用双引号,但是由于双引号中有少数字符有特殊含义,所以可以用反斜杠转义,意思是有时您需要转义反斜杠,有时则不需要。例如:
$ echo "$"
$
$ echo "\t"
\t
)
我正在尝试 运行 调用 appcmd
的 Bash
脚本将站点添加到 IIS。
#!/bin/bash
windir=c:\windows
domain=""
path=""
#also tried using forward slashes by replacing backslashes
#physicalPath=`echo "$path" | sed 's/\\/\//g'`
#add site
$windir\syswow64\inetsrv\appcmd add site /name:$domain /physicalpath:$path
我调用脚本使用:
script.sh mydomain.com c:\mypath
但是,当我检查 IIS 时,站点的物理路径 属性 是使用 正斜杠 而不是反斜杠设置的。
我做错了什么?
来自 https://technet.microsoft.com/en-us/library/cc725781%28v=ws.10%29.aspx 的以下数据是否有帮助?
要更改应用程序内容的路径,请使用以下语法:
appcmd set app /app.name: string /[path='/'].physicalPath: string
变量app.namestring是应用程序的虚拟路径,physicalPathstring是应用程序内容的物理路径。
例如,要为名为 contoso 的站点中名为 marketing 的应用程序更改位置 c:\application 的物理路径,请在命令提示符下键入以下内容,然后按 ENTER:
appcmd set app /app.name: contoso / marketing /[path='/'].physicalPath:c:\ application
有关 Appcmd.exe 的详细信息,请参阅 Appcmd.exe (IIS 7)。
反斜杠用于防止对某些字符进行特殊处理:
$ z=foo
$ echo "$z"
foo
$ echo "$z"
$z
因此,您需要自己转义反斜杠才能按字面意思使用它们。 shell 将每一对 \
视为单个文字 \
.
windir=c:\\windows
domain=""
path=""
#add site
"$windir"\\syswow64\\inetsrv\\appcmd add site /name:"$domain" /physicalpath:"$path"
但是,更简单的转义方法是将它们包含在单引号中。
windir='c:\windows'
domain=""
path=""
#add site
"$windir"'\syswow64\inetsrv\appcmd' add site /name:"$domain" /physicalpath:"$path"
(也可以使用双引号,但是由于双引号中有少数字符有特殊含义,所以可以用反斜杠转义,意思是有时您需要转义反斜杠,有时则不需要。例如:
$ echo "$"
$
$ echo "\t"
\t
)