【发布时间】:2023-03-07 07:57:02
【问题描述】:
我正在尝试使此代码正常工作。如果输入 1,它将打开 iTunes。如果输入 2,它会打开 iPhoto 等。我使用了 if/elif/else 并且我一直在一遍又一遍地检查该方法。好像写的很到位。代码如下:
#!/bin/sh
echo Please choose one.
echo 1. Open iTunes.app
echo 2. Open iPhoto.app
echo 3. Open iMovie.app
read UserChoice
cd /Users/$USER/Applications
if [ “$UserChoice”=“1” ]; then
open iTunes.app
elif [ “$UserChoice”=“2” ]; then
open iPhoto.app
elif [ “$UserChoice”=“3” ]; then
open iMovie.app
else
echo “Please choose a number.”
fi
然而,每次我运行这段代码时,它只听第一个“if”语句。因此,如果我键入 2 或 3,它只会打开 iTunes,运行第一个 if 语句。我没有正确使用 elif 还是有其他方法可以使这项工作?
【问题讨论】:
-
这与问题无关,但您发布的代码使用了“智能引号”,shell无法识别。确保在脚本中使用纯 ASCII 引号。
-
我不太明白你在说什么。什么是智能引号和 ASCII 引号?
-
ASCII 引号更简单——它们没有弯曲,也没有区分左右形式。请参阅this 的“背景”部分。区别很重要:
echo “Please choose a number.”打印“Please choose a number.”包括引号,因为 shell 将它们视为字符串的一部分,而不是字符串周围的分隔符。将此与echo "Please choose a number."(纯 ASCII 引号)进行比较,后者打印Please choose a number.(正确识别和删除引号)。
标签: macos shell unix scripting