[英]Multiple bash script with different parameters
我有以下 bash 腳本,我使用終端啟動。
dataset_dir='/home/super/datasets/Carpets_identification/data'
dest_dir='/home/super/datasets/Carpets_identification/augmented-data'
# if dest_dir does not exist -> create it
if [ ! -d ${dest_dir} ]; then
mkdir ${dest_dir}
fi
# for all folder of the dataset
for folder in ${dataset_dir}/*; do
curr_folder="${folder##*/}"
echo "Processing $curr_folder category"
# get all files
for item in ${folder}/*; do
# if the class dir in dest_dir does not exist -> create it
if [ ! -d ${dest_dir}/${curr_folder} ]; then
mkdir ${dest_dir}/${curr_folder}
fi
# for each file
if [ -f ${item} ]; then
# echo ${item}
filename=$(basename "$item")
extension="${filename##*.}"
filename=`readlink -e ${item}`
# get a certain number of patches
for i in {1..100}
do
python cropper.py ${filename} ${i} ${dest_dir}
done
fi
done
done
鑒於處理所有文件至少需要一個小時。 如果我在最后一個 for 循環中將 '100' 更改為 '1000' 並啟動同一腳本的另一個實例,會發生什么情況?
第一個進程會數到 1000 還是會繼續數到 100?
我認為該文件在 bash 進程執行時將是只讀的。 但是您可以強制更改。 已經運行的進程將計數到其原始值 100。
你必須關心結果。 您正在同一個輸出目錄中寫入,並且必須預期副作用。
“當您對腳本進行更改時,您會在磁盤(硬盤 - 永久存儲器)上進行更改;當您執行腳本時,腳本會加載到您的內存(RAM)中。
(見https://askubuntu.com/questions/484111/can-i-modify-a-bash-script-sh-file-while-it-is-running )
但是“您會注意到文件是以 8KB 的增量讀取的,因此 Bash 和其他 shell 可能不會完全加載文件,而是分塊讀取它們。”
(見https://unix.stackexchange.com/questions/121013/how-does-linux-deal-with-shell-scripts )
因此,在您的情況下,您的所有腳本都由腳本解釋器加載到 RAM 內存中,然后執行。 這意味着如果您更改該值,然后再次執行它,第一個實例仍將具有“舊”值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.