簡體   English   中英

在bash中定義變量時出錯

[英]Error defining variable in bash

我正在編寫簡單的管家腳本。 該腳本包含以下代碼行。這是我從實際代碼中提取的示例代碼,因為它是一個大文件。

 #!/bin/bash

 ARCHIVE_PATH=/product/file

 FunctionA(){
    ARCHIVE_USER=user1  # archive storage user name (default)
    ARCHIVE_GROUP=group1    # archive storage user group (default)

    functionB
 }

 functionB() {
    _name_Project="PROJECT1"
    _path_Componet1=/product/company/Componet1/Logs/
    _path_Component2=/product/company/Componet2/Logs/


     ##Component1##
     archive "$(_name_Project)" "$(_path_Componet1)" "filename1" "file.log" 
 }

 archive(){
     _name= $1
     _path=$2
     _filename=$3
     _ignore_filename=$4
     _today=`date + '%Y-%m-%d'`
     _archive=${ARCHIVE_PATH}/${_name}_$(hostname)_$(_today).tar
     if [ -d $_path];then
        echo "it is a directory"
     fi
 }

 FunctionA

當我運行上述腳本時,出現以下錯誤

@localhost.localdomain[] $ sh testScript.sh
testScript.sh: line 69: _name_Component1: command not found
testScript.sh: line 69: _path_Component2: command not found
date: extra operand `%Y-%m-%d'
Try `date --help' for more information.
testScript.sh: line 86: _today: command not found
it is a directory

有人可以解釋一下我在做什么錯。

我看到以下行:_today = date + '%Y-%m-%d'

我發現的一個錯誤可以通過刪除+和'之間的空格來解決,如下所示:

_today = date +'%Y-%m-%d'

我看不到_name_Component1和_name_Component2變量在哪里聲明,所以在那里無濟於事:)

您的變量擴展不正確-您正在使用$()來執行子shell替換。 您需要${} ,即:

 archive "${_name_Project}" "${_path_Componet1}" "filename1" "file.log" 

至於date錯誤,請在+后面沒有空格。

幾件事...您正在使用$(variable),當它在date命令上應為$ {variable}時,請確保+和格式之間沒有空格,並且您的name = $ 1,您不想那里的空間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM