我正在尝试运行Bash
脚本,调用appcmd
将网站添加到IIS。
#!/bin/bash
windir=c:\\windows
domain="$1"
path="$2"
#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时,网站的物理路径属性是使用正斜杠而不是反斜杠设置的。
我做错了什么?
答案 0 :(得分:1)
来自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)。
答案 1 :(得分:1)
反斜杠用于防止某些字符的特殊处理:
$ z=foo
$ echo "$z"
foo
$ echo "\$z"
$z
因此,您需要转义反斜杠才能按字面意思使用它们。 shell将每对\\
视为单个文字\
。
windir=c:\\\\windows
domain="$1"
path="$2"
#add site
"$windir"\\\\syswow64\\\\inetsrv\\\\appcmd add site /name:"$domain" /physicalpath:"$path"
但是,更简单的方法是将它们包含在单引号中。
windir='c:\\windows'
domain="$1"
path="$2"
#add site
"$windir"'\\syswow64\\inetsrv\\appcmd' add site /name:"$domain" /physicalpath:"$path"
(您也可以使用双引号,但由于有一些字符在双引号中具有特殊含义,因此可以使用反斜杠来转义它们,这意味着有时您需要转义反斜杠,有时候你不会。例如:
$ echo "\$"
$
$ echo "\t"
\t
)