我只有一個條件需要檢查。我想在shell腳本中使用if-else構造。我如何寫它。大多數文檔顯示,該結構是做多方面這就是爲什麼他們使用IF構造中的語法問題:shell腳本
if []; then
echo "do something"
elif
echo "somethingelse"
else
echo "something 2"
fi
但在我的情況下,我寫我的結構形式大致如下。它給出了語法問題。
#!/bin/sh
hadoopFileList=`hadoop fs -ls /app/SmartAnalytics/Apps/service_request_transformed.db/sr_denorm_bug_details/ | sed '1d;s/ */ /g' | cut -d\ -f8`
destination="/apps/phodisvc/creandoStaging"
scpData()
{
for file in $hadoopFileList
do
echo $file
echo "copying file to the staging directory"
hadoop fs -copyToLocal $file $destination
sleep 2s
echo "deleting the file"
echo ${file##*/}
done
}
if [[ -d "$destination" ]]; then
#file exists copy data
scpData()
else
#else create directory and copy data
mkdir -p $destination
scpData()
fi
當目錄存在時,'mkdir -p'已經不成功(成功)。爲什麼你有'if'呢? –
@DavisHerring的評論是爲了stackoverflow用戶而寫的。 – dataEnthusiast
原因一:你不應該打電話給你用'()' 錯誤的函數:()''scpData權 :'scpData' 只有函數定義需要'()' –