2016-09-08 8 views
0

私は、Macでターミナルタスクのセットを自動化するために、シェルスクリプトコードを書いています。プログラムはMacのターミナルで実行されますが、ifステートメント内のネストされたコマンドは、ifステートメントのいずれかが真であるときには実行されません。助言がありますか?シェルスクリプトからターミナルコマンドを実行するには? (MacOS 10.12)

#!/bin/bash 

FINDER="1" 
DOCK="2" 
CAFF="3" 

echo Select an option: 
echo 1. killall Finder 
echo 2. killall Dock 
echo 3. caffeinate 

echo Enter you choice: 
read CHOICE 

if [ "$CHOICE"="$FINDER" ]; then 
    killall Finder 
elif [ "$CHOICE"="$DOCK" ]; then 
    killall Dock 
elif [ "$CHOICE"="$CAFF" ]; then 
    caffeinate 
fi 

exit 

答えて

2

条件内の等号の周囲にスペースがありません。

#!/bin/bash 

FINDER="1" 
DOCK="2" 
CAFF="3" 

echo Select an option: 
echo 1. killall Finder 
echo 2. killall Dock 
echo 3. caffeinate 

echo Enter you choice: 
read CHOICE 

if [ "$CHOICE" = "$FINDER" ]; then 
    killall Finder 
elif [ "$CHOICE" = "$DOCK" ]; then 
    killall Dock 
elif [ "$CHOICE" = "$CAFF" ]; then 
    caffeinate 
fi 
+0

ここでは、等号を付けていますが、コンソールに入力した数字に関係なく、プログラムはif文の最初の引数のみを実行します。 。 –

+0

シバンの下に 'set -x'を追加してみてください。実行すると実行されるコマンドが書かれ、スクリプトのデバッグに役立ちます。端末を使用して実行します。がんばろう! – GabLeRoux

0

このフォーラムのヘルプのおかげで、私は問題を解決することができました。

#!/bin/bash 

CHOICE=0 
FINDER=1 
DOCK=2 
CAFF=3 

echo Select an option: 
echo 1. killall Finder 
echo 2. killall Dock 
echo 3. caffeinate 

echo -n Enter your choice: 
read CHOICE 

echo You chose: $CHOICE 

if [ $CHOICE = $FINDER ]; then 
    echo Executing killall Finder… 
    killall Finder 
elif [ $CHOICE = $DOCK ]; then 
    echo Executing killall Dock…  
    killall Dock 
elif [ $CHOICE = $CAFF ]; then 
    echo Executing caffeinate… 
    caffeinate 
fi 

exit 
関連する問題