1
array=('org.battery.plist' 'org.disk.plist' 'org.memory.plist');

echo "1) org.battery.plist"
echo "2) org.disk.plist"
echo "3) org.memory.plist"

echo "Enter selection(s) to load, separated by commas: "
read var

sudo launchctl load -w ${array[$var]}

私は正しい軌道に乗っていますか?私は少し立ち往生しています。誰か助けてくれませんか?

ユーザーが 1、2 を入力した場合、スクリプトは以下でこれを実行すると予想されます -

sudo launchctl load -w org.disk.plist
sudo launchctl load -w org.memory.plist
4

3 に答える 3

1

これを試して、

IFS=","
for i in $var
do
    sudo launchctl load -w ${array[$i - 1]}
done

また、入力が配列の範囲外であるかどうか、およびスローとエラーをチェックする必要があります。

于 2012-05-02T00:00:58.487 に答える
1

驚くべきことに、「select」と呼ばれる、そのような選択のためのビルドインが bash にあります。

select entry in ${array[@]}; 
do  
    sudo launchctl load -w $entry
done 

試してみてくださいhelp select

于 2012-05-02T00:04:54.360 に答える
0

これの方が良い:

array=('org.battery.plist' 'org.disk.plist' 'org.memory.plist');

for (( i=0;i<"${#array[@]}";i++ )) ; do
    let n=i+1
    printf '%d) %s\n' $n "${array[$i]}"
done

IFS=, read -r -p 'Enter selection(s) to load, separated by commas: ' -a selections

for selection in "${selections[@]}" ; do
    let selection=selection-1
    sudo launchctl load -w "${array[$selection]}"
done
于 2012-05-02T11:28:21.650 に答える