# 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"/
これにより、必要な作業を実行できます(少なくともまだ多くの情報を提供していないようです...)。