chmod +x ..ファイルを開くことができません。 [閉じる]

chmod +x ..ファイルを開くことができません。 [閉じる]

端末でシェルスクリプトを実行すると、何らかの理由で動作しません。私のファイル名が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スクリプトは必要ありません。shbash

bash my_script.sh

実際にはshebangを完全に省略することができます。

お役に立てば幸い

おすすめ記事