Tôi cần xóa tệp khỏi mã Fortran
. Tôi đang ở số ubuntu 12.04, x86_64
. Tôi không hiểu tại sao quy trình được mô tả bên dưới không hoạt động. Xin hãy giúp tôi làm rõ tình hình (trên thực tế, trên một số hệ thống, nó hoạt động, nhưng không phải của tôi).Cách xóa tệp từ mã fortran?
Có một cách khác: Tôi có thể gọi lệnh unix trực tiếp rm -f file
, nhưng tôi muốn biết có gì sai với phương pháp của mình. Cảm ơn bạn.
Bước 1. làm cho kịch bản del.sh đơn giản và đặt nó vào ~/bin
$ cat del.sh
[ $# -ge 1 ] && rm -f $1
$ chmod u+x del.sh; mv del.sh ~/bin
Bước 2. Mã Fortran, del.for:
character*100 cmd
character*30 file
call getarg(1,file)
write(cmd,100) file
100 format('source del.sh ',a30)
call system(cmd)
end
Bước 3. Biên dịch và chạy :
$ ifort -o del del.for
$ ./del file
Kết quả:
sh: 1: source: not found
Điều gì là sai? Tệp 'source del.sh' đơn giản hoạt động, nhưng không phải từ mã Fortran ... gây nhầm lẫn.
Từ mã Fortran:
100 format('del.sh ',a30)
100 format('bash del.sh ',a30)
công việc một cách hoàn hảo, nhưng
100 format('sh del.sh ',a30)
không hoạt động. Tôi đã cài đặt bash
nhưng không có csh
. Cảm ơn bạn.
Bạn có biết rằng một tập tin cũng có thể được xóa bằng cách mở nó với tình trạng 'CÀO' và sau đó đóng nó. Đây là thiết bị di động trên tất cả các hệ điều hành và không cần phải gây rối với các tập lệnh hoặc lệnh OS là gì để xóa tệp. – cup
cup và @AlexanderVogt: cảm ơn bạn đã trả lời. Có, Fortran có thể xóa tệp, tôi biết điều đó. Ý tưởng gọi kịch bản từ mã Fortran sẽ làm cho chương trình của bạn linh hoạt hơn: tập lệnh có thể dễ dàng sửa đổi và điều chỉnh theo nhu cầu của bạn mà không cần biên dịch lại dự án. Ví dụ, thay vì xóa tập tin, tôi có thể sao lưu nó và vân vân. Một câu hỏi khác của tôi là: tại sao phương pháp mô tả không hoạt động? Tôi chỉ tò mò ... – axion
tiêu chuẩn cũ f77 thực sự chỉ đơn giản là nói "SCRATCH không được chỉ định với một tập tin có tên". Tôi không biết làm thế nào cầm tay mà thực sự là để xóa một tập tin được đặt tên theo cách đó? – agentp