나는 일반적인 사용을 위해 awk 명령을 단순화하고 싶기 때문에 이와 같은 함수를 작성 awk '{print "rm -r"$4 }'
하려고 할 때마다 작성할 필요가 없습니다.myawk "rm -r"$4
myawk() { awk '{ print $1 }' }
작동하지 않습니다..
Ubuntu에서 이러한 함수를 어떻게 작성할 수 있습니까?
答え1
쉘 스크립트에서 내장된 awk 스크립트로 문자열을 전달하려면 awk 변수 및 매개변수를 사용하십시오 -v
.
myawk () {
awk -v mystring="$1" '{ print mystring }'
}
또 다른 가능성은 문자열을 환경 변수에 넣고 배열을 통해 액세스하는 것입니다 ENVIRON
.
答え2
작은따옴표 대신 큰따옴표를 사용해 보세요. http://www.gnu.org/s/bash/manual/html_node/Double-Quotes.html
아니면 다음과 같이 작성하세요:
myawk () { awk '{print '"$1"' }'; }
하지만 원래 사용자 문자열을 포함하려고 하면 많은 부작용이 발생할 수 있다는 것을 알 수 있습니다. 예를 들어:
myawk '"hello"; system("echo there")"
이는 "hello"로 평가되며 awk '{print "hello"; system("echo there") }'
"There"가 표시될 수 있지만 올바르게 이스케이프되지 않으면 더 많은 악성 명령이 전송될 수 있습니다.
答え3
alias awk="awk '{print $1 }'"
.bashrc 파일에 추가하는 것은 어떻습니까?