[英]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.