처음에는 6개의 매개변수 세트를 스크립트에 전달했습니다.
Script.sh a b c d e f
스크립트에서 매개변수를 관리하는 명령 중 하나입니다.
comm=$(echo $1 |sed 's/~/ /g')
답변1
이 sed
표현식은 s/~/ /g
각 물결표 문자를 공백 문자로 바꿉니다. 말 그대로 " ~
전체적으로(전체 입력 줄에서) 정규식과 일치하는 모든 항목을 공백으로 바꿉니다"를 의미합니다 . 이 경우 표현은 "faster"로 쓸 수도 있고 y/~/ /
전체 sed
명령을 "faster"로 바꿀 수도 있습니다 tr '~' ' '
.
이 작업은 다음에서 bash
보다 효율적으로 수행될 수 있습니다 .
comm=${1//\~/ }
~
현재 사용자 홈 디렉토리의 경로 이름이 확장되지 않도록 하려면 여기서 이스케이프하거나 따옴표로 묶어야 합니다 .
어떤 경우든 $1
이를 사용하려면 큰따옴표로 묶어야 하며 echo
(쉘 글로브가 파일 이름으로 확장되기를 원하지 않는 한) 이상적으로는 명령이 작성됩니다 printf
(이렇게 하면 초기 대시가 $1
명령문에서 무언가로 해석되는 것을 방지할 수 있습니다). 일부 옵션의 시작 부분 echo
, 경우에 따라 특정 백슬래시 시퀀스를 해석하는 것을 피하기 위해):
comm=$( printf '%s\n' "$1" | tr '~' ' ' )
관련된: