ファイル名を読み、データを選択し、テーブルを作成してヘッダーを追加するbashスクリプトがあります。残念ながら、ヘッダーを追加して出力ファイルを提供すると、次のエラーメッセージが表示されます。
./big_table_rcp.sh: line 153: /tmp/out: Permission denied
これは次の行に関連付けられます。
| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt
出力ファイルへのアクセスを許可する方法を知っている人はいますか?
答え1
/tmp/out
ディレクトリにアクセスする権限がないため、権限エラーが発生する可能性があります/tmp
。
問題のある行の前にファイルにどの権限があるかを確認ls -l /tmp | grep out
するなどの内容を追加してください。/tmp/out
また、使用しないで/tmp/out
くださいmktemp
。
tmpfile=`mktemp`
your code here | cat - out_${scenario}.txt > "$tmpfile" && mv "$tmpfile" ${gauge}_${scenario}.txt
からman mktemp
:
一時ファイルまたはディレクトリを安全に作成し、その名前を印刷します。
答え2
使用しないでください/tmp/out
。ただし、/tmp/out.$$
同時実行または残りのプロセスでは競合せず、より良いことは、/tmp/out.${LOGNAME}.$$
これを使用するとユーザーレベルのクリーンアップが可能であることです。