다음 명령 목록을 어떻게 개별적으로 인용할 수 있습니까?
s="cp
mkdir
[[
mv
rm"
quoted_s= ????
이는 다음과 같이 출력되어야 합니다 echo $quoted_s
.
cp
mkdir
\[\[
mv
rm
함께 사용 ${(q)s}
하거나 ${(qq)s}
참조하십시오.
$ echo ${(qq)s}
'cp
mkdir
[[
mv
rm'
답변1
이 경우 b
확장 플래그를 사용할 수 있습니다. 또는 :info zsh flag
man zshexpn
b Quote with backslashes only characters that are special to pat‐
tern matching.
그래서 주어진
~ % print -r -- $s
cp
mkdir
[[
mv
rm
그 다음에
~ % print -r -- ${(b)s}
cp
mkdir
\[\[
mv
rm
보다 일반적으로는 개행으로 분할 q
하고 결과에 적용한 후 다시 조인할 수 있습니다.
~ % print -r -- ${(F)${(qf)s}}
cp
mkdir
\[\[
mv
rm
또는 csh 스타일 접미사 수정자를 사용하세요.
~ % print -r -- ${(F)${(f)s}:q}
cp
mkdir
\[\[
mv
rm
또는 심지어 ( print
다시 줄 바꿈을 추가합시다)
% print -rC1 -- ${(qf)s}
cp
mkdir
\[\[
mv
rm
( 열에 -C1
인쇄할 때의 장점은 매개변수가 없으면 빈 줄을 인쇄하는 대신 아무것도 인쇄되지 않는다는 것 1
C
입니다 .)-l
, b
, q
, qq
, qqq
, qqqq
, 플래그 및 수정 자는 다양한 유형의 참조를 생성하므로 특정 사용 사례에 가장 적합한 것을 선택하십시오.q-
q+
:q
무엇을 하든 잊지 마세요 --
. 이를 무시하면 최악의 취약점인 임의 명령 주입 취약점이 발생합니다.