bash脚本中变量的默认值

bash脚本中变量的默认值,bash,Bash,我想给bash脚本中的变量一个默认值 以下是脚本: unamestr=`uname` if [[ "$unamestr" == 'Linux' ]] || [[ "$unamestr" == 'Darwin' ]]; then DEFAULT_LOCATION="/home/$USER/.kaggle/competitions/$1" elif [[ "$unamestr" == 'CYGWIN' ]] || [[ "$unamestr" == 'MINGW' ]]; then DEFA

我想给bash脚本中的变量一个默认值

以下是脚本:

unamestr=`uname`
if [[ "$unamestr" == 'Linux' ]] || [[ "$unamestr" == 'Darwin' ]]; then
  DEFAULT_LOCATION="/home/$USER/.kaggle/competitions/$1"
elif [[ "$unamestr" == 'CYGWIN' ]] || [[ "$unamestr" == 'MINGW' ]]; then
  DEFAULT_LOCATION="C:\\Users\\$USER\\.kaggle\\competitions\\$1"
fi

kaggle competitions download -c $1
KAGGLE_LOCATION=${2:-DEFAULT_LOCATION}

mv KAGGLE_LOCATION .
mkdir data
mv $1/*.zip data/
mv $1/*.csv data/

cd data/
unzip *.zip
rm *.zip
当我执行echo$DEFAULT\u位置时,会出现正确的值。但是当我执行$KAGGLE_LOCATION并且不输入任何cmd参数时,我会将
DEFAULT_LOCATION
作为输出,而不是实际值。我的代码有什么问题


PS:我从未使用过Mac,所以我不确定unix的位置是否与Mac相同。如果不同,请发表意见。

如果您没有展开变量,请尝试展开变量,如“$KAGGLE_LOCATION”


您没有像应该的那样扩展值:
KAGGLE\u LOCATION=${2:-$DEFAULT\u LOCAITON}
mv“$KAGGLE\u LOCATION”。
。谢谢,这很有效。同样,在分配给
KAGGLE\u LOCATION
时,您需要在
默认位置前面加一个
$
unamestr=`uname`
if [[ "$unamestr" == 'Linux' ]] || [[ "$unamestr" == 'Darwin' ]]; then
  DEFAULT_LOCATION="/home/$USER/.kaggle/competitions/$1"
elif [[ "$unamestr" == 'CYGWIN' ]] || [[ "$unamestr" == 'MINGW' ]];then
  DEFAULT_LOCATION="C:\\Users\\$USER\\.kaggle\\competitions\\$1"
fi

kaggle competitions download -c $1
KAGGLE_LOCATION=${2:-DEFAULT_LOCATION}

mv "$KAGGLE_LOCATION" .
mkdir data
mv $1/*.zip data/
mv $1/*.csv data/

cd data/
unzip *.zip
rm *.zip