• shell脚本将执行结果重定向到指定路径指定文件对应的变量


    # cat a.sh
    #!/bin/bash
    
    dir = /home/
    
    file = a.txt
    
    ps -ef > ${dir}/${file}
       执行报错# /bin/bash a.sh
    dir: cannot access =: No such file or directory
    /home/:
    magx  songpy  test
    =:     cannot open (No such file or directory)
    a.txt: cannot open (No such file or directory)

    问题在于你在定义变量时使用了空格,导致变量名被解析成了dir file ,并非dirfile。在Shell中,变量名不能包含空格。

    正确的写法如下:

    1. #!/bin/bash
    2. dir=/home
    3. file=a.txt
    4. ps -ef > "${dir}/${file}"

    请注意:

    1. 变量名和等号之间不能有空格;
    2. 变量值如果包含空格等特殊字符,最好使用双引号括起来,以避免出现意外情况。

    生成的文件名称带日期(精确到秒)

    可以使用date命令获取当前日期,并结合重定向符号>将命令输出的内容重定向到一个以日期命名的文件中。示例代码如下:

    1. #!/bin/bash
    2. # 获取当前日期
    3. now=$(date +"%Y-%m-%d")
    4. # 重定向输出到文件中
    5. echo "Hello World!" > "$now.txt"

    执行脚本后,会在当前目录下生成以当前日期命名的文件,例如2021-10-28.txt,其中包含了Hello World!这行文本。如果需要在文件名中加上时间戳,可以使用+%H%M%S来获取当前时间的小时、分钟、秒数。完整代码如下:

    1. #!/bin/bash
    2. # 获取当前日期和时间
    3. now=$(date +"%Y-%m-%d_%H%M%S")
    4. # 重定向输出到文件中
    5. echo "Hello World!" > "$now.txt"

    执行脚本后,会在当前目录下生成以当前日期和时间命名的文件,例如2021-10-28_163410.txt,其中包含了Hello World!这行文本。

    可以使用date命令获取当前日期,并结合重定向符号>将命令输出的内容重定向到一个以日期命名的文件中。示例代码如下:

    1. #!/bin/bash
    2. # 获取当前日期
    3. now=$(date +"%Y-%m-%d")
    4. # 重定向输出到文件中
    5. echo "Hello World!" > "$now.txt"

    执行脚本后,会在当前目录下生成以当前日期命名的文件,例如2021-10-28.txt,其中包含了Hello World!这行文本。如果需要在文件名中加上时间戳,可以使用+%H%M%S来获取当前时间的小时、分钟、秒数。完整代码如下:

    1. #!/bin/bash
    2. # 获取当前日期和时间
    3. now=$(date +"%Y-%m-%d_%H%M%S")
    4. # 重定向输出到文件中
    5. echo "Hello World!" > "$now.txt"

    执行脚本后,会在当前目录下生成以当前日期和时间命名的文件,例如2021-10-28_163410.txt,其中包含了Hello World!这行文本。

  • 相关阅读:
    Leetcode_49:字母异位词分组
    港陆证券:服装家纺公司上半年投资并购力度加大
    vue中列表实现漏出即曝光
    CenterNet算法by bilibili
    三种内存分配的库比较
    Java—通过sign签名认证实现安全的开放接口API
    基于写时复制技术的并发集合———CopyOnWriteArrayList源码分析
    简单实现一个todoList(上移、下移、置顶、置底)
    为什么审计平台不适合进行数据库变更管理?
    maven
  • 原文地址:https://blog.csdn.net/songpeiying/article/details/134292120