我尝试自动执行一个过程,该过程涉及使用bash脚本create.sh
创建文件夹,给定文件夹名称作为用户输入。
#!/bin/sh
mkdir -p tags/$1/
因此,在使用./create.sh abc
时,此脚本将在文件夹abc
中创建一个文件夹tags
。但是,当用户输入中有一个或多个空间时,则不会这样做。例如,./create.sh "folder space"
将在当前目录中创建文件夹space
,在folder
目录中创建文件夹tags
。
我尝试通过用sed
转义空格,将每个<space>
更改为\<space>
来解决此问题。
#!/bin/sh
mkdir -p tags/$(echo $1 | sed 's@ @\\ @g')/
但这仍然无法正常工作。 ./create.sh "folder space"
将在当前目录中创建文件夹space
,在\folder
目录中创建文件夹tags
。我在这里感到困惑是因为如果我在echo
的前面添加mkdir
并再次运行,则会打印出mkdir -p tags/folder\ space/
,如果我直接在终端中复制并运行它, , 有用。
所以我不确定哪一步做错了。我在Mac OS 10.14.3上使用默认终端