端末でシェルスクリプトを実行すると、何らかの理由で動作しません。私のファイル名がFinal_exam.shであると仮定すると、以下のコマンドが表示されます。
chmod 755 final_exam.sh
sh final_exam.sh
それは言う
ls: cannot access 'PATH_TO_FILES/A.csv': No such file or directory
ls: cannot access 'PATH_TO_FILES/B.csv': No such file or directory
どうすればいいですか?どんな提案/提案でもいただければ幸いです。
シェルスクリプトを実行しようとしましたが、動作しません。 「該当するファイルやディレクトリがありません」というメッセージが表示されます。私の結果のスクリーンショットを添付しました。アドバイスや助けをいただきありがとうございます。たくさんありがとうございます。
stats@stats-VirtualBox:~/Desktop$ ls
FINAL_Project __MACOSX
stats@stats-VirtualBox:~/Desktop$ cd FINAL_Project
stats@stats-VirtualBox:~/Desktop/FINAL_Project$ cd final_exam
stats@stats-VirtualBox:~/Desktop/FINAL_Project/final_exam$ pwd
/home/stats/Desktop/FINAL_Project/final_exam
stats@stats-VirtualBox:~/Desktop/FINAL_Project/final_exam$ ls
Domains_FormB.csv final_project.sh Numeric1.awk WidetoLong.r
Domains_FormV.csv FirstConvert.r Numeric2.awk
Final_Output FormV.csv SecondConvert.r
stats@stats-VirtualBox:~/Desktop/FINAL_Project/final_exam$
したがって、デフォルトでは^^にはCSVへのフルヒープパスがあります。文書。
これは私のシェルスクリプトです。
# 9 Path to the folder with the data
#PATH_TO_FILES=../.
PATH_TO_FILES=home/Desktop/FINAL_Project/final_exam
sed -i 's/^M//g' FirstConvert.r
sed -i 's/^M//g' SecondConvert.r
sed -i 's/^M//g' WidetoLong.r
# 1 Remove any files that had been created in previous attempts
rm -f Final_Output
touch Final_Output
for file in `ls PATH_TO_FILES/Form?.csv`
do
fname=`echo $file | sed 's/.*\///g' | sed 's/\.csv//g'`
# 2 Separate the answer key from the student answers
grep "KEY" $file > OUT_Answers_$fname
grep -v "KEY" $file > OUT_StudentAnswers_$fname
# 3 Use the R script provided that matches the student answers to the answer key
Rscript FirstConvert.r OUT_StudentAnswers_$fname OUT_Answers_$fname OUT_FirstConvert_$fname
# 4 Use the R script provided which changes the R object from wide to long format
Rscript WidetoLong.r OUT_FirstConvert_$fname OUT_WidetoLong_$fname
sed -i 's/\"//g' OUT_WidetoLong_$fname
# 5 Format the resulting question numbers from the file in step 4
awk -f Numeric1.awk OUT_WidetoLong_$fname > OUT_Questions_$fname
done
for file in `ls PATH_TO_FILES/Domains_Form?.csv`
do
fname=`echo $file | sed 's/.*\///g' | sed 's/Domains_//g' | sed 's/\.csv//g'`
# 6 Select only the domain number and question number from the domains file and remove the header
tail -n +2 $file | cut -d',' -f3,4 | sed 's/,/ /g' | sed 's/\r//g' > OUT_Domain_tmp_$fname
# 7 Modify the script from step 5 to format the question numbers in the file you created in step 6 to be sorted correctly
awk -f Numeric2.awk OUT_Domain_tmp_$fname > OUT_Domain_$fname
# 8 Join your student's answer file to the domains on/by question number
join -1 3 -2 2 -o 1.1,1.2,1.3,2.1,1.4 OUT_Questions_$fname OUT_Domain_$fname >> Final_Output
done
# Clean intermediate files
rm -f OUT_*
ベストアンサー1
forループに含まれていると仮定し、すべてのコメントを読んだ後も見つかりませんでした。$
PATH_TO_FILES=home/Desktop/FINAL_Project/final_exam
私は一流のものが欠けていると言いたいです/
。
あなたのスクリプトが次のものを検索している可能性があります。<current dir>home
スクリプトの先頭で変数を「反転」することで確認できます。
...
echo $PATH_TO_FILES
...
そして質問のタイトルにも記載されているので、このように使用したり実行するときにはchmod
スクリプトは必要ありません。sh
bash
bash my_script.sh
実際にはshebangを完全に省略することができます。
お役に立てば幸い