函数出错...我可以在函数中传递输入参数吗?

时间:2018-04-19 17:52:37

标签: linux bash shell

这只是一小段代码...但是终端给我一个错误“令牌未预期的语法错误”存档“”。 bash中的函数不接受function fun (hello) {

之类的参数
function extractProcess (archive){
  mv $archive $WORK_DIR
  pathFile=${archive%/*} #Path input archive
  nameFile=$(ls $WORK_DIR)
  name=${archive%.*} #nameFile without exteension
  case $nameFile in
    *.tar.bz)   tar xjf "$WORK_DIR/$nameFile" -C $WORK_DIR          ;;
    *.tar.bz2)  tar xjf "$WORK_DIR/$nameFile" -C $WORK_DIR          ;;
    *.tar.gz)   tar xzf "$WORK_DIR/$nameFile" -C $WORK_DIR          ;;
    *.bz)       bunzip2 "$WORK_DIR/$nameFile"      ;;
    *.bz2)      bunzip2 "$WORK_DIR/$nameFile"      ;;
    *.gz)       gunzip -Ndk "$WORK_DIR/$nameFile"       ;;
    *.tar)      tar xf "$WORK_DIR/$nameFile" -C $WORK_DIR       ;;
    *.tbz)      tar xjf "$WORK_DIR/$nameFile" -C $WORK_DIR      ;;
    *.tbz2)     tar xjf "$WORK_DIR/$nameFile" -C $WORK_DIR      ;;
    *.tgz)      tar xzf "$WORK_DIR/$nameFile" -C $WORK_DIR      ;;
    *.zip)      unzip -qq "$WORK_DIR/$nameFile" -d $WORK_DIR        ;;
  esac

2 个答案:

答案 0 :(得分:0)

你可以,但你不能声明形式参数。相反,当您调用函数时传递的任何参数都可用作正文中的位置参数$1$2等。

# The parentheses are always empty, to signal a function definition.
# The function keyword is a non-standard extension and should be avoided.
extractProcess () {

    archive=$1
    ...
}

答案 1 :(得分:-1)

不要试图在函数声明中定义它们,而是使用$参数:

function extractProcess (){
  archive=$1
  mv $archive $WORK_DIR
  pathFile=${archive%/*}