# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(echo $(ls [1-9]*([0-9])_[0-9] | sort -rn | head -n 2))
# if there are no other files and directories you can use "ls |" in the line above
newer="${dirs% *}"
prior="${dirs#* }"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/
결과: cp: cannot access 15_1:/mit.sas: No such file or directory
.
이 스크립트에는 문제가 있습니다 15_1:/mit.sas
. 실제로는 15_1/mit.sas
이 스크립트를 빠르게 살펴보시기 바랍니다. 그리고 정확한 스크립트를 어디에서 변경해야 하는지 제안해 보세요. ksh에서 스크립트를 작성할 수 있나요?
답변1
콜론은 명령에서 나오 므로 ls
대신 사용할 경우 /bin/ls -d
이를 제거해야 합니다 .
# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(echo $(/bin/ls -d [1-9]*([0-9])_[0-9] | sort -rn | head -n 2))
# if there are no other files and directories you can use "ls |" in the line above
newer="${dirs% *}"
prior="${dirs#* }"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/
답변2
# in bash
shopt -s extglob
cd /oc/txa/db/
dirs=$(ls -d [1-9]*([0-9])_[0-9] | sort -rn | head -n 2)
# if there are no other files and directories you can use "ls |" in the line above
newer="$(echo $dirs | head -n 1)"
prior="$(echo $dirs | tail -n 1)"
test -z "$newer" && exit 1
test -z "$prior" && exit 1
cp -p "${prior}/mit.sas" "$newer"/
이렇게 하면 필요한 작업을 수행할 수 있습니다(적어도 아직 많은 정보를 제공하지 않은 것 같습니다...).