acプログラムをシェルに変換しようとしています。しかし、エラーが発生します。手順は次のとおりです。
$bt[]
$pri[]
$pp[]
$temp
echo "Enter the number of processes: "
read n
for((i=1;i<=n;i++));
do
pp[$i] = $i;
echo "Enter the Burst Time & Priority of Process: "
#scanf("%d %d",&bt[i], &pri[i]);
read bt[$i]
read pri[$i]
echo $i
done
for((i=1;i<=n;i++));
do
for((k=i+1; k<n; k++));
do
if(pri[$i] -gt pri[$k])
then
echo "(string comparison)"
temp=pp[$i]
pp[$i]=pp[$k]
pp[$k]=temp
temp=bt[$i]
bt[$i]=bt[$k]
bt[$k]=temp
temp=pri[$i]
pri[$i]=pri[$k]
pri[$k]=temp
fi
done
done
wt[0] = 0
tat[0] = bt[0]
for((i=1; i<n; i++));
do
wt[$i] = tat[$i-1]
tat[$i] = wt[$1] +bt[$i]
done
echo -e "\nPROCESS\t\tPRIORITY\tBURST TIME\tWAITING TIME\tTURNAROUND TIME"
for((i=1; i<=n; i++));
do
#echo -e "%s \t\t %s \t\t %s \t\t %s \t\t %s " "p[i],pri[i],bt[i],wt[i],tat[i]"
echo -e "${p[i]} \t\t ${pri[i]} \t\t ${bt[i]} \t\t ${wt[i]} \t\t ${tat[i]} "
done
助けてください。私はbashプログラミングの構文を知りません。
答え1
この質問に答える人はいないと思います。さて、それは答えです。これらのエラーを解決するために@Kusalanandaの助けを借りて。
#!/bin/bash
${bt[]}
${pri[]}
${pp[]}
$temp
${wt[]}
${tat[]}
echo "Enter the number of processes: "
read -r n
for((i=1;i<=n;i++));
do
pp[$i]=$i
echo "Enter the Burst Time & Priority of Process: "
#scanf("%d %d",&bt[i], &pri[i]);
read -r bt[$i]
read -r pri[$i]
echo "$i"
done
for((i=1;i<=n;i++));
do
for((k=i+1; k<n; k++));
do
if("${pri[$i]}-gt${pri[$k]}")
then
echo "(string comparison)"
temp=${pp[$i]}
pp[$i]=${pp[$k]}
pp[$k]=temp
temp=${bt[$i]}
bt[$i]=${bt[$k]}
bt[$k]=temp
temp=${pri[$i]}
pri[$i]=${pri[$k]}
pri[$k]=temp
fi
done
done
wt[0]=0
tat[0]=${bt[0]}
for((i=1; i<n; i++));
do
wt[$i]=${tat[$i-1]}
tat[$i]=${wt[1]}+${bt[$i]}
done
echo -e "\nPROCESS\t\tPRIORITY\tBURST TIME\tWAITING TIME\tTURNAROUND TIME"
for((i=1; i<=n; i++));
do
#echo -e "%s \t\t %s \t\t %s \t\t %s \t\t %s " "p[i],pri[i],bt[i],wt[i],tat[i]"
echo -e "${pp[i]} \t\t ${pri[i]} \t\t ${bt[i]} \t\t ${wt[i]} \t\t ${tat[i]} "
done
ありがとうございます。クレジットは次のとおりですhttps://www.shellcheck.net/そしてプログラミングボス。