問題提出
用以前的往xcode添加模板的腳本時報錯:
html
#!/bin/bash SAVEIFS=$IFS IFS=$(echo -en "\n\b") PROJECT_TEMPLATES_PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application/" FILE_TEMPLATES_PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/" EMPTY_APPLICATION_PATH="$PWD/Empty Application.xctemplate" OC_CATEGORY_PATH="$PWD/Objective-C category.xctemplate" OC_PROTOCOL_PATH="$PWD/Objective-C protocol.xctemplate" OC_EXTENSION_PATH="$PWD/Objective-C class extension.xctemplate" cp -R $EMPTY_APPLICATION_PATH $PROJECT_TEMPLATES_PATH cp -R $OC_CATEGORY_PATH $FILE_TEMPLATES_PATH cp -R $OC_PROTOCOL_PATH $FILE_TEMPLATES_PATH cp -R $OC_EXTENSION_PATH $FILE_TEMPLATES_PATH IFS=$SAVEIFS
分析問題
1.根據提示多是新裝的xcode模板路徑變了,因此找不到目的文件位置.驗證一下(把上面的路徑粘貼在Search【Command + space】)發現是能夠找到xcode文件模版的路徑的.
2仔細看下xcode文件模板的路徑發下有空格;猜測多是包含空格形成的問題;修改下代碼以下linux
cp -R "$EMPTY_APPLICATION_PATH" "$PROJECT_TEMPLATES_PATH"
3.執行發下問題解決了; 添加兩個雙引號的的做用是: The reason you double quote variables is because the contents of the variable may include spaces. A space is typically the boundary character which denotes a break in atoms within a string of text for most commands(通常在linux命令中空格被當作字符分割符號)
4.根據描述咱們實驗一下
shell
其餘知識
1.shell 命令使用單引號與雙引號的區別
2.Shell腳本調試選項(引用別處文章內容連接在下面)
Shell自己提供一些調試方法選項:
-n,讀一遍腳本中的命令但不執行,用於檢查腳本中的語法錯誤。
-v,一邊執行腳本,一邊將執行過的腳本命令打印到標準輸出。
-x,提供跟蹤執行信息,將執行的每一條命令和結果依次打印出來。xcode
使用這些選項有三種方法
在命令行提供參數:$sh -x script.sh
腳本開頭提供參數:#!/bin/sh -x
在腳本中用set命令啓用or禁用參數:其中set -x表啓用,set +x表禁用。注意避免幾種調試選項混用。bash
參考連接:
https://unix.stackexchange.co...
https://unix.stackexchange.co...
https://www.cnblogs.com/anliv...
https://stackoverflow.com/que...app