在MacOSX中,可以在Finder中创建一个名称中包含正斜杠“/”的文件夹。
我试图bash脚本做类似的东西一样来
args=("[email protected]")
name=${args[0]}
street_corner=${args[1]}
my_folder="Hello ${name} - ${streetcorner}"
mk() {
case "$1" in /*) :;; *) set -- "./$1";; esac
mkdir -p "$1"
}
mk $my_folder
其中街角是交叉的格式为“街1 /街头2”,因此需要的斜线被保存在目录名称。
我读several articles like this one他们解释了如何操纵字符串以便在您自己设置字符串时转义或保持向前。我遇到的问题是用户传递参数在脚本中使用,因此当我运行该命令来创建一个以$ my_folder作为参数的目录时,字符串已经被封装。
如何扩展street_corner的值而不让正斜杠创建名为“street 2”的子目录位于目录“street 1”内,而是创建一个名为“street 1/street 2”的目录?
我尝试了这些修复和故障
street_corner="${args[0]}"
my_folder='"Hello ${name} - ${streetcorner}"'
my_folder="'Hello ${name} - ${streetcorner}'"
my_folder="Hello ${name} - ${'streetcorner'}"
my_folder="Hello ${name} - ${$"streetcorner"}"
my_folder="Hello "${name}" - "${streetcorner}
而且还试图给出street_corner输入像
./my_script.sh "name" "street 1\/street 2"
./my_script.sh "name" 'street 1/street 2'
./my_script.sh "name" "'street 1/street 2'"
因此,您需要将streetcorner中的斜线转换为文件名中的冒号。这应该工作:'my_folder =“Hello $ {name} - $ {streetcorner // \ //:}”。你可以在花括号中读到这样的混乱:streetcorner变量的值('streetcorner')与所有出现的(''''''斜杠字符''''''' - 注意它被转义了,所以它不会是误认为是分隔符)替换为('/')冒号(':')。 –
感谢@chepner和@ gordon-davisson! =) – Discofan