kshのprintfでコマンド出力を使用する

kshのprintfでコマンド出力を使用する

私は次のことをしようとしています:

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB) " "$0"

うまくいきますが、次のようにしてファイルの実際のサイズを表示したいと思います。

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" "ls -l $0 | awk {'print $5'}"

しかし、私はそうしませんでした。私はこれが正しいアプローチではないと思います。

答え1

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB: %lu) " "$0" \
  "$(wc -c < "$0")"

解析された出力はls信頼できません(そしてその周辺に何があるのか​​忘れました$(...))。

答え2

私はこれがbashやkshのような一種のシェルの形であると仮定します。 Xはファイルです。 (名前にスペースがあると思います)

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$x" \
   $(ls -ld -- "$x" | awk {'print $5'})

すべきこと。

構文に注意してください。$( some code )

答え3

GNUシステムでは、以下をstat使用することをお勧めします。

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" \
    "$(exec stat -Lc '%s' -- "$0")"
  • -Lstat次のシンボリックリンクを作成します。

関連情報