为什么我的 bash 脚本无法识别日期命令中的变量?
Why is my bash script not recognizing the variable in the date command?
如果我在 bash 脚本的函数中执行这一行,它会成功运行:
function myFnc(){
...
variable1=$(date -d 2021-01-01 +%W)
...
}
但是如果我通过 运行
将“2021”作为输入参数传递
myBash.sh '2021'
如果我用相应的变量替换年份,我会收到错误“日期:日期无效#-01-01”:
function myFnc(){
...
variable1=$(date -d -01-01 +%W)
...
}
同样使用引号也没有帮助:
function myFnc(){
...
variable1=$(date -d "-01-01" +%W)
...
}
知道如何解决吗?提前致谢!
bash 中的函数有自己的参数列表。因此,他们无权访问脚本的参数列表。
您需要将参数传递给函数:
#!/bin/bash
# test.sh
myFnc() {
variable1=$(date -d ""-01-01 +%W)
echo "${variable1}"
}
myFnc ""
现在像这样调用脚本:
bash test.sh 2021
注意:bash中的function
关键字没有作用。它只会使脚本不必要地与 POSIX 不兼容。所以我建议不要使用它。
如果我在 bash 脚本的函数中执行这一行,它会成功运行:
function myFnc(){
...
variable1=$(date -d 2021-01-01 +%W)
...
}
但是如果我通过 运行
将“2021”作为输入参数传递myBash.sh '2021'
如果我用相应的变量替换年份,我会收到错误“日期:日期无效#-01-01”:
function myFnc(){
...
variable1=$(date -d -01-01 +%W)
...
}
同样使用引号也没有帮助:
function myFnc(){
...
variable1=$(date -d "-01-01" +%W)
...
}
知道如何解决吗?提前致谢!
bash 中的函数有自己的参数列表。因此,他们无权访问脚本的参数列表。
您需要将参数传递给函数:
#!/bin/bash
# test.sh
myFnc() {
variable1=$(date -d ""-01-01 +%W)
echo "${variable1}"
}
myFnc ""
现在像这样调用脚本:
bash test.sh 2021
注意:bash中的function
关键字没有作用。它只会使脚本不必要地与 POSIX 不兼容。所以我建议不要使用它。