이것이 당신의 문제입니다.
echo "find /data/backup/ -name rec20140202* -exec awk -F"|" '$23!=0 {print"|"$14"|"$23}'
echo 인수를 큰 따옴표로 묶고 -F "|"에 큰 따옴표도 사용합니다. 그리고 심지어 awk 스크립트에서도. 그런 다음 쉘은 다음과 같은 4- 프로그램 파이프를 구성하려고합니다.
echo "find /data/backup/ -name rec20140202* -exec awk -F" |
" '$23!=0 {print" |
"$14" |
"$23}' {} \; > remoteDay1.txt"
쉘의 이후 위치 매개 변수 $1
와는 $2
비어있는, 당신은 당신이 설명대로 오류를 얻을. 큰 따옴표 안에 큰 따옴표를 넣으려면 이스케이프해야합니다.
echo \"foo\"
"foo"
따옴표를 포함한 에코 . 작은 따옴표로 묶인 문자열로 작은 따옴표를 따옴표로 묶는 방법은 없습니다. 또한 $23
쉘 확장 에서 등 을 숨기고 싶습니다 . 그들로 탈출 \$
. 나는 사용하는 것이 좋습니다
echo "find ... -F\"|\" '\$23!=0 {print \"|\"\$14\"|\"\$23}' {} \;>remoteDay1.txt"
출처
https://stackoverflow.com/questions/22050170