此腳本需要在Mac OSX上運行。以下腳本是構建一個QT QRC(資源文件定義),它不過是一個具有不同擴展名的XML文件。我已經在Mac上測試了每個在終端中分離的腳本。所有這一切都應該工作,但我無法讓for循環正確執行。Mac Bash腳本失敗了嗎?
這個腳本應該:
- 列出當前目錄
- 地帶的所有文件了./由生產找到
- 創建正確的XML
這裏是什麼結果應該看起來像:
<RCC>
<qresource prefix="/">
<file>login.html</file>
<file>start.html</file>
<file>base/files.html</file>
</qresource>
</RCC>
這裏是我當前的腳本:
#!/bin/bash
#Define the File
file="Resources.qrc"
#Clear out the old file, we want a fresh one
rm $file
#Format the start of the QRC file
echo "<RCC>" >> $file
echo " <qresource prefix=\"/\">" >> $file
#Iterate through the directory structure recursively
for f in $(find . -type f)
do
#Ensure the file isn't one we want to ignore
if [[ $f != "*.qrc" && $f != "*.rc" && $f != "*.h" && $f != "*.sh" ]]
then
#Strip out the ./ for the proper QRC reference
echo "<file>$f</file>" | sed "s/.\///" >> $file
fi
done
#Close the QRC file up
echo " </qresource>" >> $file
echo "</RCC>" >> $file
而這正是終端不斷告訴我:
'build-qrc.sh: line 11: syntax error near unexpected token `do
'build-qrc.sh: line 11: ` do
任何時候,我嘗試做了循環殼它給我同樣的錯誤。我已經嘗試過半球和類似的東西無濟於事。有任何想法嗎?謝謝。
感謝chepner,這是最終的腳本。它爲QT生成一個完美的QRC資源文件,用於將html項嵌入到webkit驅動的應用程序中。
#!/bin/bash
#Define the Resource File
file="AncestorSyncUIPlugin.qrc"
#Clear out the old file if it exists, we want a fresh one
if [ -f $file ]
then
rm $file
fi
# Use the -regex primary of find match files with the following
# extensions: qrc rc sh h. Use -not to negate that, so only files
# that don't match are returned. The -E flag is required for
# the regex to work properly. The list of files is stored in
# an array
target_files=($(find -E . -type f -regex ".*\.(png|jpg|gif|css|html)$"))
# Use a compound statement to redirect the output from all the `echo`
# statements at once to the target file. No need to remove the old file,
# no need to append repeatedly.
{
#Format the start of the QRC file
echo "<RCC>"
# Use single quotes to avoid the need to escape the " characters
echo ' <qresource prefix="/">'
# Iterate over the list of matched files
for f in "${target_files[@]}"
do
# Use parameter expansion to strip "./" from the beginning
# of each file
echo " <file>${f#./}</file>"
done
#Close the QRC file up
echo " </qresource>"
echo "</RCC>"
} > $file
我剛測試過你的腳本,它對我來說工作正常......你如何在終端上調用腳本? – leemes
可以是./qrc.sh或sh qrc.sh或bash qrc.sh.我在獅子上。我有點困惑。 – Dovy
你是否也嘗試'爲...;做'(分號後沒有換行)?這是我習慣的語法,但正如我之前所說:您的腳本完美地在我的機器上工作... – leemes