我試圖通過bash執行shell腳本,同時也試圖爲所述腳本傳遞參數。通過bash使用路徑作爲參數調用shell腳本
到目前爲止,我從來沒有遇到過這個問題,並且像/opt/scripts/start_import.sh user pass "Some name with spaces"
這樣的命令總是執行得很好。三個參數傳遞得很好,可以在start_import腳本中使用。
今天我寫了一個新的腳本,我們稱之爲set_properties.sh。我像往常一樣執行命令/opt/scripts/set_properties.sh /opt/subfolder/subfolder user pass stringwithoutspaces stringwithoutspaces2
。
然而,這一次我收到轟炸與錯誤信息:
/opt/scripts/set_properties.sh: line 7: /opt/subfolder/subfolder=: No such file or directory
/opt/scripts/set_properties.sh: line 13: user=: command not found
/opt/scripts/set_properties.sh: line 19: pass=: command not found
/opt/scripts/set_properties.sh: line 56: syntax error: unexpected end of file
我懷疑,傳遞路徑(/選擇/子文件夾/ subolder)作爲參數導致此錯誤。然而,我還沒有找到這個解決方案呢...
我猜shell是試圖評估路徑,而不是隻是作爲參數傳遞它。我嘗試用雙引號括住路徑,它應該停止對封閉字符串的任何評估,但沒有運氣。
我在做什麼錯?調用腳本時是否有任何解決方案將路徑作爲參數傳遞?提前致謝!
編輯:set_properties.sh的內容:
set +v
error_txt=""
ret_code="0"
#check input parameters
if $1=""
then
error_txt="Invalid parameter for 'XXXX'."
ret_code="1"
fi
if $2=""
then
error_txt="Invalid parameter for 'XXXX'."
ret_code="1"
fi
if $3=""
then
error_txt="Invalid parameter for 'XXXX'."
ret_code="1"
fi
if $4=""
then
error_txt="Invalid parameter for 'XXXX'."
ret_code="1"
if $5=""
then
error_txt="Invalid parameter for 'XXXX'."
ret_code="1"
fi
# create new .properties based on input parameters
echo "################################################################################" > $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#created automatically by xxxx processing on `date`" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "propertyName=^$4" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "propertyName=$2" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "propertyName=$3" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "propertyName=$5" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "#xxxxyyyyzzzz" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "propertyName=N" >> $1/subfolder1/subfolder2/my_property_file.properties
echo "################################################################################" >> $1/subfolder1/subfolder2/my_property_file.properties
ret_code=$?
echo $error_txt
exit $ret_code
寫你能提供你的腳本內容? – xurei
修復你的if-tests如果[「x {$ 1}」-eq'x'];然後' –
用參數的路徑引用換行 – lulyon