2014-03-03 84 views
0

我想創建一個電子郵件腳本,它實際上是一個使用郵件-x併發送給號碼的短信腳本。它會是這樣的:Shell腳本 - 基於用戶輸入的電子郵件腳本

#/bin/sh 

Joe=8881235555 
Bob=8881235556 

echo "Who do you want to text?:(i.e. Joe, Bob, etc)" 
read name 
echo "What do you want to say?:)" 
read quote 
echo "texting $name with $quote" 

echo $variablequote | mailx -s "Text Message via email" [email protected] 

如何獲得該用戶輸入名稱轉移到預設值?

回答

2

考慮使用更現代化的外殼:

#!/bin/bash 

# Use an associative array, and map names to numbers 
declare -A numbers 
numbers=([Joe]=8881235555 [Bob]=8881235556) 

echo "Who do you want to text?:(i.e. Joe, Bob, etc)" 
read name 
echo "What do you want to say?:)" 
read quote 

# Look up number by name 
number=${numbers[$name]} 

if [[ $number ]] 
then 
    echo "texting $name ($number) with $quote" 
    mailx -s "Text Message via email" "[email protected]" <<< "$quote" 
else 
    echo "Unknown user" 
    exit 1 
fi 

如果你想使用/ bin/sh的:

#!/bin/sh 

# Prefix the numbers with something 
number_Joe=8881235555 
number_Bob=8881235556 

echo "Who do you want to text?:(i.e. Joe, Bob, etc)" 
read name 
echo "What do you want to say?:)" 
read quote 

# Remove any dangerous characters that the user enters 
sanitized=$(printf "%s" "$name" | tr -cd 'a-zA-Z') 

# Look up by evaluating e.g. "number=$number_Joe" 
eval "number=\$number_$sanitized" 

if [ "$number" ] 
then 
    echo "texting $name ($number) with $quote" 
    printf "%s\n" "$quote" | mailx -s "Text Message via email" "[email protected]" 
else 
    echo "Unknown user" 
    exit 1 
fi 
在bash
+0

,也可以使用間接變量'$ {@example名字!} .com「,但這是不可讀的,難以維護 –

+0

@glennjackman,儘管如此,對於試圖支持bash 2.x或3.x(因爲關聯數組僅爲4.x)的用戶而言,這裏值得記錄。 –

+0

Thi非常有幫助!現在,我將如何包含全部功能?是否可以從單獨的txt文件中提取數字,而不是在腳本中設置它們? – Bryan