
나는 bash 스크립팅을 처음 접했습니다.
printf를 사용하여 실행할 준비가 된 명령의 형식을 지정하고 변수에 할당하고 싶습니다.
그러나 즉시 실행됩니다. /opt/cinar/packages/libcnrhttp2_*
명령 문자열에 문자열로 쓰는 것이 아니라 나열하는 것입니다 .
나는 이것을 기대하고 있습니다 :
ssh [email protected] ls /opt/cinar/packages/libcnrhttp2_* -lr | awk 'NR==1'
#!/bin/bash
declare -r libcnrhttp2="libcnrhttp2_"
declare -r root="/opt/cinar/packages"
declare -r destination="/opt/cinar/packages"
declare -r id=ctopkaya
declare -r host=192.168.13.137
declare -r remote=$id"@"$host
declare cmd=""
printf -v cmd ssh %s ls %s/%s* -lr | awk 'NR==1' $remote /opt/cinar/packages libcnrhttp2_
cd $destination
echo "--------------"
echo $cmd
echo "--------------"
답변1
텍스트 형식을 지정해야 하는 명령은 큰따옴표 안에 있으므로 인쇄할 텍스트로 처리됩니다. 명령의 결과를 인쇄하려면 명령을 내부에 넣으십시오 $()
(명령 대체). 예:
printf "$(printf foo | awk 'NR==1') bar"