如何在 Bash 脚本中将反斜杠替换为空
How to replace back-slash with nothing in Bash script
在 bash 脚本中,我想以 YYYY\mm\dd
.
的格式获取当前日期
然后我想删除反斜杠 \
并将结果存储在变量中,FOO
。
我的密码是
FOO=$($(date +'%Y\%m\%d')//\/)
echo "$FOO"
//\/
的字面意思是
//
替换每个
\
反斜杠
/
和
- 无
但是,我得到了错误
2019/\/: No such file or directory
我这里做错了什么?
该脚本有两个嵌套的“$(”构造。一个应该完成工作。第二个应该是 ${}
以删除不需要的 \
YMD=$(date +'%Y\%m\%d')
FOO=${YMD//\/}
echo "$FOO"
当格式化日期被外部“$(”强制作为命令时会触发错误消息。还要注意 ${}
不能像 $()
那样嵌套,它们需要一个变量名字.
附带问题 - 为什么在不需要时添加 \
?
${var//\/}
使用{
}
大括号,是variable expansion,需要变量展开
您可以:
FOO=$(date +'%Y\%m\%d')
FOO=${FOO//\/}
参数扩展不嵌套;您需要将它们作为单独的步骤进行。
foo=$(date +'%Y\%m\%d')
foo=${foo//'\'/}
echo "$foo"
注意小写变量名的使用 -- 这是根据 POSIX-defined convention,它指定用于对 shell 或操作系统有意义的变量的全大写名称,并保留其他应用程序使用的名称。
在 bash 脚本中,我想以 YYYY\mm\dd
.
然后我想删除反斜杠 \
并将结果存储在变量中,FOO
。
我的密码是
FOO=$($(date +'%Y\%m\%d')//\/)
echo "$FOO"
//\/
的字面意思是
//
替换每个\
反斜杠/
和- 无
但是,我得到了错误
2019/\/: No such file or directory
我这里做错了什么?
该脚本有两个嵌套的“$(”构造。一个应该完成工作。第二个应该是 ${}
以删除不需要的 \
YMD=$(date +'%Y\%m\%d')
FOO=${YMD//\/}
echo "$FOO"
当格式化日期被外部“$(”强制作为命令时会触发错误消息。还要注意 ${}
不能像 $()
那样嵌套,它们需要一个变量名字.
附带问题 - 为什么在不需要时添加 \
?
${var//\/}
使用{
}
大括号,是variable expansion,需要变量展开
您可以:
FOO=$(date +'%Y\%m\%d')
FOO=${FOO//\/}
参数扩展不嵌套;您需要将它们作为单独的步骤进行。
foo=$(date +'%Y\%m\%d')
foo=${foo//'\'/}
echo "$foo"
注意小写变量名的使用 -- 这是根据 POSIX-defined convention,它指定用于对 shell 或操作系统有意义的变量的全大写名称,并保留其他应用程序使用的名称。