MacOSX에서는 이름에 슬래시 "/"가 포함 된 폴더를 만들 수 있습니다.
나는
거리 코너 형식으로 "거리 1/거리 2"교차입니다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
에 비슷한 일을 수행하여 동일한 스크립트를 비난하려고 따라서 유지 될 슬래시를 필요로하고 디렉토리 이름.
나는 several articles like this one을 읽습니다. 여기에서 이스케이프 할 문자열을 조작하는 방법이나 직접 문자열을 설정할 때 앞으로 유지하는 방법을 설명합니다. 내가 가진 문제는 사용자가 스크립트에서 사용되는 인수를 전달하므로 문자열을 $ my_folder 인수로 명령을 실행할 때 이미 캡슐화 된 것입니다.
슬래시가 "street 1"디렉토리 내에있는 "street 2"라는 하위 디렉토리를 만들지 않고 "street 1/street 2"라는 단일 디렉토리를 만드는 대신 street_corner 값을 어떻게 확장합니까?
내가 이러한 수정을 시도하고
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}
실패 또한 스크립트 내부
./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