如何在 Linux 中获取日期作为运行时变量

如何在 Linux 中获取日期作为运行时变量

我尝试了以下这些,但失败了。我需要输出日期格式。

--------第一次尝试--------

#!/bin/bash
echo "read date yyyymmdd"

read $temp

dd=$(date -j -f '%Y%m%d' "$temp" +'%Y%m%d')

echo $dd

输出:invalid option -- 'j'

--------第二次尝试--------

#!/bin/bash

echo "read date yyyymmdd"

read $temp

dd=$(date -d "$temp" +'%Y%m%d')

echo $dd

输出:打印今天的日期。

答案1

主要问题是read $temp。要将某些内容读入变量,请不要使用前缀$(这将访问变量的值):

read temp

第二个问题是您似乎不知道date您正在使用的命令的实现方式。 GNUdate没有-j标志。然而,该标志可用于其他实现date(例如在 BSD 系统上,它导致实用程序解析给定的日期戳并进行输出,但不日期)。

第三个问题是您似乎想使用 转换$tempYYYYMMDD格式date,但您已经要求用户输入此格式的日期,因此转换是无操作的。

脚本的更正版本(为 GNU 编写)date,并且没有对第三个问题做任何事情,因为不清楚您要做什么实际上想做):

#!/bin/bash

read -p 'Enter date (YYYYMMDD): ' indate
date -d "$indate" +'%Y%m%d'

如果全部你想要做的就是将日期放入变量中然后输出它,那么就没有理由向用户询问日期:

#!/bin/sh

thedate=$( date +'%Y%m%d' )
printf 'The date is %s\n' "$thedate"

或者,如果您不需要将其存储在变量中供以后使用,

#!/bin/sh

date +'The date is %Y%m%d'

答案2

因此,您试图将一些输入读取到$temp变量中,然后将其打印在今天的日期旁边?

您不希望命令的变量$前面有:tempread

#!/bin/bash
echo "read date yyyymmdd"
read temp
echo "${temp} + $(date '+%Y%m%d')"

相关内容